using System; namespace Yi.Framework.Common.Base { #region 无值定义 /// /// 无值定义 /// public class NullValue { /// /// 唯一识别型的默认无值 /// public static readonly Guid Guid = Guid.Empty; /// /// 日期时间的默认无值 /// /// 解决C#DateTime最小值是SQL 2005不允许的范围内 public static readonly DateTime DateTime = DateTime.Parse("1753-1-1 12:00:01"); /// /// JavaScript日期时间的默认无值 /// /// public static readonly DateTime JavaScriptDateTime = DateTime.Parse("1970-1-1 00:00:00"); #region 数字类型 /// /// 短整数的默认无值 /// public const short ShortInterger = -1;//short.MinValue; /// /// 整数的默认无值 /// public const int Interger = -1;//int.MinValue; /// /// 长整数的默认无值 /// public const long LongInterger = -1;//long.MinValue; /// /// Decimal数的默认无值 /// public const decimal Decimal = -1;//decimal.MinValue; /// /// Float数的默认无值 /// public const float Float = -1;//float.MinValue; /// /// Double数的默认无值 /// public const double Double = -1;//double.MinValue; /// /// Byte数的默认无值 /// public const byte Byte = byte.MinValue; /// /// SByte数的默认无值 /// public const sbyte SByte = sbyte.MinValue; #endregion /// /// 字串的默认无值 /// public static readonly string String = string.Empty; /// /// 一般对象的判断 /// public const object Object = null; } #endregion #region 无值的扩展方法 /// /// 无值的扩展方法 /// public static class NullValueExtensions { #region 一般类型 public static Guid TryToGuid(this string guid) { if (Guid.TryParse(guid, out var guid1)) { return guid1; } return Guid.Empty; } public static string TryStringNull(this string value) { return value == null ? "" : value; } /// /// Object类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this object value) { if (value == null || value == NullValue.Object) { return true; } return false; } /// /// Object类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this object value) { return !value.IsNull(); } public static bool IsGuidNotNull(this Guid? value) { return !value.IsGuidNull(); } public static bool IsGuidNull(this Guid? value) { if (value == null || value == Guid.Empty) { return true; } return false; } /// /// String类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this string value) { if (string.IsNullOrEmpty(value) || string.IsNullOrWhiteSpace(value)) { return true; } return false; } /// /// String类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this string value) { return !value.IsNull(); } /// /// Guid类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this Guid value) { if (value == NullValue.Guid) { return true; } return false; } /// /// Guid类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this Guid value) { return !value.IsNull(); } #region 数字类型 /// /// ShortInterger类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this short value) { if (value == NullValue.ShortInterger) { return true; } return false; } /// /// ShortInterger类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this short value) { return !value.IsNull(); } /// /// Interger类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this int value) { if (value == NullValue.Interger) { return true; } return false; } /// /// Interger类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this int value) { return !value.IsNull(); } /// /// LongInterger类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this long value) { if (value == NullValue.LongInterger) { return true; } return false; } /// /// LongInterger类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this long value) { return !value.IsNull(); } /// /// Decimal类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this decimal value) { if (value == NullValue.Decimal) { return true; } return false; } /// /// Decimal类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this decimal value) { return !value.IsNull(); } /// /// Float类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this float value) { if (value == NullValue.Float) { return true; } return false; } /// /// Float类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this float value) { return !value.IsNull(); } /// /// Double类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this double value) { if (value == NullValue.Double) { return true; } return false; } /// /// Double类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this double value) { return !value.IsNull(); } /// /// Byte类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this byte value) { if (value == NullValue.Byte) { return true; } return false; } /// /// Byte类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this byte value) { return !value.IsNull(); } /// /// SByte类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this sbyte value) { if (value == NullValue.SByte) { return true; } return false; } /// /// SByte类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this sbyte value) { return !value.IsNull(); } #endregion /// /// DateTime类型无值判断 /// /// 待判断对象 /// 是否为空(true--真,false--假) public static bool IsNull(this DateTime value) { if (value == DateTime.MinValue || value <= NullValue.DateTime || value == NullValue.JavaScriptDateTime) { return true; } return false; } /// /// DateTime类型有值判断 /// /// 待判断对象 /// 是否不为空(true--真,false--假) public static bool IsNotNull(this DateTime value) { return !value.IsNull(); } #endregion } #endregion }