每一个有想法的程序员,都会有自己的一系列收藏xxxHelper/xxxUtility。

X组件遵循宁缺毋滥的原则,只封装最为必要的助手类。

Nuget包:NewLife.Core

源码:https://github.com/NewLifeX/X/blob/master/NewLife.Core/Common/Utility.cs

视频:https://www.bilibili.com/video/BV1gq4y1g78w/


概述

Utility是X组件最常用的助手类,引用几百上千次,位于System命名空间。

Utility采用静态类扩展Object方式提供服务,内部默认实现 DefaultConvert,可重载修改逻辑,赋值覆盖 Utility.Convert 属性。


大部分转换方法带有defaultValue参数,在转换失败时不会抛出异常,而是返回默认值!


整型ToInt

最常用的类型转换,没有之一,特别在web开发时。

主要功能点:

  1. 字符串转整数,支持全角数字,可过滤掉逗号记数法中的逗号
  2. 时间日期转整数,转Unix秒,也就是1970年以来总秒数
  3. 时间点转整数,也是转Unix秒,但是带时区,支持UTC
  4. 字节数组转整数,默认小字节序 BitConverter.ToInt32,常用于协议解析
  5. 通用版 Convert.ToInt32,异常时返回默认值


强烈推荐,web开发时使用-1作为默认值,因为很多时候0具有业务意义。

如:var userId=p["userId"].ToInt(-1),如果userId为-1,表示没有传递该参数,且可以接收 userId=0 的参数。


长整型ToLong

最常用的类型转换,没有之一,特别在web开发时。

主要功能点:

  1. 字符串转整数,支持全角数字,可过滤掉逗号记数法中的逗号
  2. 时间日期转整数,转Unix毫秒,也就是1970年以来总毫秒数
  3. 时间点转整数,也是转Unix毫秒,但是带时区,支持UTC
  4. 字节数组转整数,默认小字节序 BitConverter.ToInt64,常用于协议解析
  5. 通用版 Convert.ToInt64,异常时返回默认值

浮点数ToDouble

只有双精度浮点数,需要单精度浮点数时,可以解析双精度后再强转为单精度。

主要功能点:

  1. 字符串转浮点数,支持全角数字
  2. 字节数组转浮点数,默认小字节序,BitConverter.ToDouble
  3. 通用版 Convert.ToDouble,异常时返回默认值


布尔型ToBoolean

任意对象转为布尔型,主要是对true/false字符串的支持

主要功能:

  1. 字符串转布尔型,特别支持true/false字符串,支持全角数字,非零数字为true
  2. 通用版 Convert.ToBoolean,异常时返回默认值


推荐web开发中用可空类型:

Boolean? enable = p["enable"]?.ToBoolean();


时间日期ToDateTime/ToFullString

由于时间日期的字符串表示方式在全球没有统一,即使在中国也有很多种写法,因此这块特别常用。

在X组件内部,时间日期的标准格式是:yyyy-MM-dd HH:mm:ss,标准默认值是:DateTime.MinValue

ToDateTime主要功能:

  1. 字符串转时间日期,支持UTC,支持格式 yyyy-M-dyyyy/M/dyyyyMMddHHmmssyyyyMMdd
  2. 整型转时间日期,Unix秒,1970年以来秒数
  3. 长整型转时间日期,Unix毫秒,1970年以来毫秒数,如果小于100年,则使用Unix秒
  4. 通用版 Convert.ToDateTime,异常时返回默认值


ToFullString主要功能:最高性能把时间日期转为yyyy-MM-dd HH:mm:ss字符串,支持UTC。

普通的DateTime.ToString(format)在千万级次数时有性能问题。

emptyValue参数用于只是时间为最小值时的返回值,在web中一般使用String.Empty,避免显示 0001-01-01 00:00:00 的时间


时间点ToDateTimeOffset/ToFullString

时间点DateTimeOffset比DateTime多了一个时区偏移量,因此全部支持UTC时区。

在X组件内部,时间日期的标准格式是:yyyy-MM-dd HH:mm:ss +08:00,标准默认值是:DateTimeOffset.MinValue

ToDateTime主要功能:

  1. 字符串转时间点,支持时区,支持格式 yyyy-M-dyyyy/M/dyyyyMMddHHmmssyyyyMMdd
  2. 整型转时间点,Unix秒,1970年以来秒数
  3. 长整型转时间点,Unix毫秒,1970年以来毫秒数,如果小于100年,则使用Unix秒
  4. 通用版 Convert.ToDateTime,异常时返回默认值


ToFullString主要功能:最高性能把时间日期转为yyyy-MM-dd HH:mm:ss +08:00字符串,支持UTC。

普通的DateTimeOffset.ToString(format)在千万级次数时有性能问题。

emptyValue参数用于只是时间为最小值时的返回值,在web中一般使用String.Empty,避免显示 0001-01-01 00:00:00 的时间


异常处理GetTrue/GetMessage

GetTrue用于提起最内层异常对象,支持AggregateException、TargetInvocationException、TypeInitializationException。

GetMessage用于简化Exception.ToString()得到的调用栈信息,特别时异步编程中出现的大量价值不大的调用栈行信息。


作者:大石头 发布:2022-04-08 23:34:28 浏览:2,630)