c# 类型转换函数

c#中有统一的类型转换函数

Convert.ChangeType(object value, Type conversionType)

但是这个函数没有考虑到转换null, DBNull, Nullable<>, Enum这些类型

下面通过扩展ChangeType来实现上述类型的转换

        public static object Convert(object value, Type conversionType)
        {
            if (value == null || value is DBNull)
                return null;
            if (conversionType.IsInstanceOfType(value))
                return value;
            if (conversionType.IsEnum)
            {
                var s = value as string;
                if (s != null)
                {
                    return Enum.Parse(conversionType, s);
                }
                return Enum.ToObject(conversionType, value);
            }
            var t = Nullable.GetUnderlyingType(conversionType) ?? conversionType;
            return System.Convert.ChangeType(value, t);
        }

  

 

posted @ 2015-01-26 16:16  vuuvv  阅读(781)  评论(0编辑  收藏  举报