Files
Yi.Framework/Yi.Framework.Net6/Yi.Framework.Common/Base/NullValue.cs
2022-09-18 17:22:47 +08:00

433 lines
12 KiB
C#

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