zoukankan      html  css  js  c++  java
  • C# 反射类型转换

    /// <summary>
    /// 泛型类型转换
    /// </summary>
    /// <typeparam name="T">要转换的基础类型</typeparam>
    /// <param name="val">要转换的值</param>
    /// <returns></returns>
    /// <remark>
    /// by mcjiffy.cn
    /// </remark>
    public static T ConvertType<T>(object val)
    {
        if (val == null) return default(T);//返回类型的默认值
        Type tp = typeof(T);
        //泛型Nullable判断,取其中的类型
        if (tp.IsGenericType)
        {
            tp = tp.GetGenericArguments()[0];
        }
        //string直接返回转换
        if (tp.Name.ToLower() == "string")
        {
            return (T)val;
        }
        //反射获取TryParse方法
        var TryParse = tp.GetMethod("TryParse", BindingFlags.Public | BindingFlags.Static, Type.DefaultBinder,
                                        new Type[] { typeof(string), tp.MakeByRefType() },
                                        new ParameterModifier[] { new ParameterModifier(2) });
        var parameters = new object[] { val, Activator.CreateInstance(tp) };
        bool success = (bool)TryParse.Invoke(null, parameters);
        //成功返回转换后的值,否则返回类型的默认值
        if (success)
        {
            return (T)parameters[1];
        }
        return default(T);
    }
  • 相关阅读:
    mysql内置函数
    phpmyadmin 安装
    java 命令行JDBC连接Mysql
    数据库工具
    java JDBC
    mysql 各种关系代数的使用
    恢复误删的DB table数据
    eclipse php pdt插件安装
    mysql通配符使用
    关系代数和sql语句对应关系
  • 原文地址:https://www.cnblogs.com/tsql/p/8743837.html
Copyright © 2011-2022 走看看