zoukankan      html  css  js  c++  java
  • 反射帮助类

    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);
    }
    }
    
    }
  • 相关阅读:
    objective-c数组
    objective-c可变数组
    objective-c可变字典
    objective-c字典
    有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
    将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
    一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?
    求123456789-23456789-3456789-456789-...-9的值
    编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值
    Unity3D笔记 GUI 二 、实现选项卡一窗口
  • 原文地址:https://www.cnblogs.com/YzpJason/p/7921394.html
Copyright © 2011-2022 走看看