c#反射的使用

发布时间 2023-05-09 15:44:52作者: zengxw1113
 1     /// <summary>
 2     /// 创建对象实例
 3     /// </summary>
 4     /// <typeparam name="T">要创建对象的类型</typeparam>
 5     /// <param name="assemblyName">类型所在程序集名称</param>
 6     /// <param name="nameSpace">类型所在命名空间</param>
 7     /// <param name="className">类型名</param>
 8     /// <returns></returns>
 9     public static T CreateInstance<T>(string assemblyName, string nameSpace, string className)
10     {
11         try
12         {
13             string fullName = nameSpace + "." + className;//命名空间.类型名
14             //此为第一种写法
15             object ect = Assembly.Load(assemblyName).CreateInstance(fullName);//加载程序集,创建程序集里面的 命名空间.类型名 实例
16             return (T)ect;//类型转换并返回
17 
18             //下面是第二种写法
19             //string path = fullName + "," + assemblyName;//命名空间.类型名,程序集
20             //Type o = Type.GetType(path);//加载类型
21             //object obj = Activator.CreateInstance(o, true);//根据类型创建实例
22             //return (T)obj;//类型转换并返回
23         }
24         catch
25         {
26             //发生异常,返回类型的默认值
27             return default(T);
28         }
29     }

以上为反射创建实例的两种方法