zoukankan      html  css  js  c++  java
  • 一个好用的C#类型转换器

            public static object ChangeType(object value, Type targetType)
            {
                
                if (targetType.IsGenericType && targetType.GetGenericTypeDefinition() == typeof (Nullable<>))
                {
                    NullableConverter nullableConverter = new NullableConverter(targetType);
                    Type convertType = nullableConverter.UnderlyingType;
                    return Convert.ChangeType(value, convertType);
                }
                if (value == null && targetType.IsGenericType)
                {
                    return Activator.CreateInstance(targetType);
                }
                if (value == null)
                {
                    return null;
                }
                if (targetType == value.GetType())
                {
                    return value;
                }
                if (targetType.IsEnum)
                {
                    if (value is string)
                    {
                        return Enum.Parse(targetType, value as string);
                    }
                    else
                    {
                        return Enum.ToObject(targetType, value);
                    }   
                }
                if (!targetType.IsInterface && targetType.IsGenericType)
                {
                    Type innerType = targetType.GetGenericArguments()[0];
                    object innerValue = ChangeType(value, innerType);
                    return Activator.CreateInstance(targetType, new object[] { innerValue });
                }
                if (value is string && targetType == typeof (Guid))
                {
                    return new Guid(value as string);
                }
                if (value is string && targetType == typeof (Version))
                {
                    return new Version(value as string);
                }
                if (!(value is IConvertible))
                {
                    return value;
                }
                return Convert.ChangeType(value, targetType);
            }
  • 相关阅读:
    win7下jdk安装环境变量配置
    !function($){}(window.jQuery)
    转载几篇
    YeeLink
    坑爹JDK8,可怜的XP
    一致性Hash
    CSS
    仿函数
    launch4j
    GOAL!!!!!!!!!!!!!
  • 原文地址:https://www.cnblogs.com/fengxiaoling/p/5089899.html
Copyright © 2011-2022 走看看