Viyi.Util/Extensions/Convert/ObjectExtentions.ToStruct.cs

(完整代码) 2KB

namespace Viyi.Util.Extensions.Convert;

public static class ObjectToStructExtensions {
    /// <summary>
    /// 将object对象当作指定数据类型进行处理。
    /// </summary>
    /// <typeparam name="T">目标类型</typeparam>
    /// <param name="object">源数据</param>
    /// <param name="defaultValue">缺省值</param>
    /// <returns>返回转换引用类型之后的值,如果不能转换为指定引用类型,
    /// 返回<c>defaultValue</c></returns>
    /// <remarks>与as关键字的区别在于,<c>As</c>方法可以处理结构。</remarks>
    public static T As<T>(this object @object, T defaultValue) where T : struct {
        try { return (T) @object; }
        catch { return defaultValue; }
    }

    /// <summary>
    /// 将object对象当作指定数据类型进行处理。
    /// </summary>
    /// <typeparam name="T">目标类型</typeparam>
    /// <param name="object">源数据</param>
    /// <returns>返回转换引用类型之后的值,如果不能转换为指定引用类型,
    /// 返回<c>default(T)</c></returns>
    /// <remarks>与as关键字的区别在于,<c>As</c>方法可以处理结构。</remarks>
    public static T As<T>(this object @object)
        where T : struct {
        return @object.As(default(T));
    }

    /// <summary>
    /// 将object对象转换为指定数据类型。
    /// </summary>
    /// <typeparam name="T">目标类型</typeparam>
    /// <param name="object">源数据</param>
    /// <param name="defaultValue">缺省值</param>
    /// <returns>通过<c>System.Convert</c>将源数据转换为指定类型的数据,
    /// 如果转换不成功,返回<c>defaultValue</c></returns>
    public static T ConvertTo<T>(object @object, T defaultValue) where T : struct {
        try { return (T) System.Convert.ChangeType(@object, typeof(T)); }
        catch { return defaultValue; }
    }

    /// <summary>
    /// 将object对象转换为指定数据类型。
    /// </summary>
    /// <typeparam name="T">目标类型</typeparam>
    /// <param name="object">源数据</param>
    /// <returns>通过<c>System.Convert</c>将源数据转换为指定类型的数据,
    /// 如果转换不成功,返回<c>default(T)</c></returns>
    public static T ConvertTo<T>(object @object) where T : struct {
        return ConvertTo<T>(@object, default(T));
    }
}

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。