Browse Source

Class<T> 暂时去除隐式转换,增加扩展方法 object.Class() 用于将 Value 转换为 Class<T>。

dev
王厅 2 months ago
parent
commit
2e190eb305
  1. 29
      Apewer/Class.cs
  2. 2
      Apewer/ClockUtility.cs
  3. 7
      Apewer/_Extensions.cs

29
Apewer/Class.cs

@ -123,26 +123,25 @@ namespace Apewer
{
if (instance == null) return false;
var boolean = instance as Class<bool>;
if (boolean != null) return boolean.Value;
// var boolean = instance as Class<bool>;
// if (boolean != null) return boolean.Value;
var text = instance as Class<string>;
if (text != null) return !string.IsNullOrEmpty(text.Value);
// var text = instance as Class<string>;
// if (text != null) return !string.IsNullOrEmpty(text.Value);
return instance != null;
return true;
}
/// <summary>从 <see cref="Class{T}"/> 到 T 的隐式转换。</summary>
public static implicit operator T(Class<T> instance)
{
if (instance == null) return default(T);
if (typeof(T).Equals(typeof(bool))) return instance.Value;
return instance.Value;
}
// /// <summary>从 <see cref="Class{T}"/> 到 T 的隐式转换。</summary>
// public static implicit operator T(Class<T> instance)
// {
// if (instance == null) return default(T);
// if (typeof(T).Equals(typeof(bool))) return instance.Value;
// return instance.Value;
// }
/// <summary>从 T 到 <see cref="Class{T}"/> 的隐式转换。</summary>
public static implicit operator Class<T>(T value) => new Class<T>(value);
// /// <summary>从 T 到 <see cref="Class{T}"/> 的隐式转换。</summary>
// public static implicit operator Class<T>(T value) => new Class<T>(value);
#endregion

2
Apewer/ClockUtility.cs

@ -16,7 +16,7 @@ namespace Apewer
/// <summary>尝试转换内容为 DateTime 实例。</summary>
public static Class<DateTime> DateTime(object value)
{
if (value is DateTime dt) return dt;
if (value is DateTime dt) return new Class<DateTime>(dt);
if (value.IsNull()) return null;
try

7
Apewer/_Extensions.cs

@ -29,6 +29,13 @@ public static class Extensions
/// <summary>是默认值。</summary>
public static bool IsDefault(this object @this) => RuntimeUtility.IsDefault(@this);
#region Class
/// <summary>用 <see cref="Apewer.Class{T}"/> 装箱。</summary>
public static Class<T> Class<T>(this T value) => new Class<T>(value);
#endregion
#region Class Utility
/// <summary>调用 Get 方法。</summary>

Loading…
Cancel
Save