• C#反射基本类型的TryParse的方法


     几个基本类型都有TryParse方法,将object 自动识别类型和转换

    using System.Reflection;
    
    public static bool TryParse<T>(object val, out T t)
    {
        t = default(T);
        if (val == null)
        {
            return true;//返回类型的默认值
        }
    
        Type type = typeof(T);
    
        string typeName = type.Name.ToLower();
        if (typeName == "string")
        {
            t = (T)((object)val.ToString()); //直接返回转换
            return true;
        }
    
        if (type.IsGenericType)  //泛型Nullable判断,取其中的类型
        {
            type = type.GetGenericArguments()[0];
        }
    
        Type[] types = new Type[] { typeof(string), type.MakeByRefType() };
        ParameterModifier[] modifiers = new ParameterModifier[] { new ParameterModifier(2) };
        MethodInfo methodInfo = type.GetMethod("TryParse", BindingFlags.Public | BindingFlags.Static, Type.DefaultBinder, types, modifiers);
        if (methodInfo != null)
        {
            object[] parameters = new object[] { val.ToString(), Activator.CreateInstance(type) };
            if ((bool)methodInfo.Invoke(null, parameters))
            {
                t = (T)parameters[1];
                return true;
            }
        }
        return false;
    }
    
  • 相关阅读:
    盘点杂谈(二)
    物料中库存的管理(一)
    物料中的库存管理(二)
    MM中的MRP(一)
    (转)成功ERP需实施顾问和项目经理亲密协作
    好久不来.
    MM中的MRP(三)
    MM中的MRP(二)
    深度学习浅层理解(一)
    处理流小结
  • 原文地址:https://www.cnblogs.com/bridgew/p/16138094.html
Copyright © 2020-2023  润新知