学习C#的特性,先来了解一下反射的基本用法 . . .
1、反射一个 DLL 中的类,没有引用它(未知类型):
Assembly assembly = Assembly.LoadFile(“程序集路径,不能是相对路径”); // 加载程序集(EXE 或 DLL)
dynamic obj = assembly.CreateInstance(“类的完全限定名(即包括命名空间)”); // 创建类的实例
示例如下所示:
2、反射当前项目中的类:
Assembly assembly = Assembly.GetExecutingAssembly(); // 获取当前程序集
dynamic obj = assembly.CreateInstance(“类的完全限定名(即包括命名空间)”); // 创建类的实例,返回为 object 类型,需要强制类型转换
也可以为:
Type type = Type.GetType(“类的完全限定名”);
dynamic obj = type.Assembly.CreateInstance(type);
示例如下所示:
4、访问以加载的 .dll 文件:
System.Reflection.Assembly.Load(“程序集名称(不含文件后缀名)”).CreateInstance(“命名空间.类名”, false);
如:
dynamic o = Assembly.Load(“Huameng”).CreateInstance(“MyNameSpace.A”, false);
示例如下所示: