C#把对象类型转化为指定类型,转化失败时返回该

C#把对象类型转化为指定类型,转化失败时返回该类型默认值

/// <summary>
    ///通用类型扩展方法类
    /// </summary>
    public static class ObjectExtensions
    {
        /// <summary>
        ///把对象类型转化为指定类型,转化失败时返回该类型默认值
        /// </summary>
        /// <typeparam> 动态类型 </typeparam>
        /// <param> 要转化的源对象 </param>
        /// <returns> 转化后的指定类型的对象,转化失败返回类型的默认值 </returns>
        public static T CastTo<T>(this object value)
        {
            object result;
            Type type = typeof(T);
            try
            {
                if (type.IsEnum)
                {
                    result = Enum.Parse(type, value.ToString());
                }
                else if (type == typeof(Guid))
                {
                    result = Guid.Parse(value.ToString());
                }
                else
                {
                    result = Convert.ChangeType(value, type);
                }
            }
            catch
            {
                result = default(T);
            }

return (T)result;
        }

/// <summary>
        ///    把对象类型转化为指定类型,转化失败时返回指定的默认值
        /// </summary>
        /// <typeparam> 动态类型 </typeparam>
        /// <param> 要转化的源对象 </param>
        /// <param> 转化失败返回的指定默认值 </param>
        /// <returns> 转化后的指定类型对象,转化失败时返回指定的默认值 </returns>
        public static T CastTo<T>(this object value, T defaultValue)
        {
            object result;
            Type type = typeof(T);
            try
            {
                result = type.IsEnum ? Enum.Parse(type, value.ToString()) : Convert.ChangeType(value, type);
            }
            catch
            {
                result = defaultValue;
            }
            return (T)result;
        }
    }

C#多线程编程实例 线程与窗体交互【附源码】

C#数学运算表达式解释器

C++ Primer Plus 第6版 中文版 清晰有书签PDF+源代码

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/7b5c82ab81cc3a9e6cb7bcc8c299b344.html