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);
            }
  • 相关阅读:
    数据库的视图概念作用
    常见的反爬虫和应对方法
    referrer policy
    JSON
    异步消息处理机制
    Acitivity(活动)
    springboot @Autowired 空指针异常问题处理
    CentOS7 宝塔 ThinkPHP SQLServer 2000 安装FreeTDS
    PHP THINKPHP 函数 dump var_dump var_export
    ThinkPHP5 WHERE AND OR 实现多条件查询
  • 原文地址:https://www.cnblogs.com/fengxiaoling/p/5089899.html
Copyright © 2011-2022 走看看