• 反射帮助类


    public static class ReflectionHelper
    {
    /// <summary>
    /// 创建对象实例
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="fullName">命名空间.类型名</param>
    /// <param name="assemblyName">程序集</param>
    /// <returns></returns>
    public static T CreateInstance<T>(string fullName, string assemblyName)
    {
    string path = fullName + "," + assemblyName;//命名空间.类型名,程序集
    Type o = Type.GetType(path);//加载类型
    object obj = Activator.CreateInstance(o, true);//根据类型创建实例
    return (T)obj;//类型转换并返回
    }
    
    /// <summary>
    /// 创建对象实例
    /// </summary>
    /// <typeparam name="T">要创建对象的类型</typeparam>
    /// <param name="assemblyName">类型所在程序集名称</param>
    /// <param name="nameSpace">类型所在命名空间</param>
    /// <param name="className">类型名</param>
    /// <returns></returns>
    public static T CreateInstance<T>(string assemblyName, string nameSpace, string className)
    {
    try
    {
    string fullName = nameSpace + "." + className;//命名空间.类型名
    //此为第一种写法
    object ect = Assembly.Load(assemblyName).CreateInstance(fullName);//加载程序集,创建程序集里面的 命名空间.类型名 实例
    return (T)ect;//类型转换并返回
    //下面是第二种写法
    //string path = fullName + "," + assemblyName;//命名空间.类型名,程序集
    //Type o = Type.GetType(path);//加载类型
    //object obj = Activator.CreateInstance(o, true);//根据类型创建实例
    //return (T)obj;//类型转换并返回
    }
    catch(Exception exc)
    {
    //发生异常,返回类型的默认值
    return default(T);
    }
    }
    
    public static T CreateInstance<T>(string assemblyName, string nameSpace, string className,object[] parameters)
    {
    try
    {
    string fullName = nameSpace + "." + className;//命名空间.类型名
    //此为第一种写法
    //object ect = Assembly.Load(assemblyName).CreateInstance(fullName);//加载程序集,创建程序集里面的 命名空间.类型名 实例
    object ect = Assembly.Load(assemblyName).CreateInstance(fullName, true, System.Reflection.BindingFlags.Default, null, parameters, null, null);//加载程序集,创建程序集里面的 命名空间.类型名 实例
    return (T)ect;//类型转换并返回
    //下面是第二种写法
    //string path = fullName + "," + assemblyName;//命名空间.类型名,程序集
    //Type o = Type.GetType(path);//加载类型
    //object obj = Activator.CreateInstance(o, true);//根据类型创建实例
    //return (T)obj;//类型转换并返回
    }
    catch (Exception exc)
    {
    //发生异常,返回类型的默认值
    return default(T);
    }
    }
    
    }
  • 相关阅读:
    NodeJS、NPM安装配置步骤(windows版本)
    23种设计模式全解析
    js阻止浏览器默认事件
    js获取不同浏览器盒子宽度高度
    H5之重力感应篇
    JS中的call()和apply()方法
    html学习笔记
    less(css)语言快速入门
    power designer简单教程
    Strom开发配置手册
  • 原文地址:https://www.cnblogs.com/YzpJason/p/7921394.html
Copyright © 2020-2023  润新知