CLR 学习笔记:程序集加载和反射(3)
摘要:在获取一个Type之后,这个类型的成员可能包含字段,构造器,方法,属性,事件和嵌套类型。接下来就看说下如何查询一个类型的成员。1.发现类型的成员上一章提到了System.Reflection.MemberInfo类型,这是一个抽象基类,而我们的类型成员是从MemberInfo派生的一组类。具体的层次结构如下。 可以调用GetMembers方法,传入BindingFlags参数,然后返回由MemberInfo派生对象构成的一个数组。 1 Assembly assemblyFromPath = Assembly.LoadFile(@"E:\StrongNameDLL.dll")
阅读全文
CLR 学习笔记:程序集加载和反射(2)
摘要:前面介绍了程序集加载的一般方式,但是我们的目的往往并不是简单的载入程序集就结束了,我们还希望了解程序集包含了哪些类型,借助程序集的某些类型实现想要的功能等。下面就接着前一章的内容继续向下学习。 1.发现程序集中定义的类型。常用的方法是Assembly的GetExportedTypes1 Assembly assemblyFromPath = Assembly.LoadFile(@"E:\StrongNameDLL.dll");2 foreach (Type t in assemblyFromPath.GetExportedTypes())3 {4 if (t.GetT...
阅读全文
CLR 学习笔记:程序集加载和反射(1)
摘要:程序集加载和反射,实现了在编译时对一个类型一无所知的情况下,如何在运行时发现类型的信息,创建类型的实例以及访问类型的成员。显现的功能以及效果是十分强大的,比如使用第三方提供的程序集,以及创建动态可扩展应用程序。程序集加载:JIT编译器在将方法的IL代码编译成本地代码时,会查看IL代码中引用了哪些类型。在运行时,JIT编译器查看元数据表TypeRef和AssemblyRe,确定对应的程序集。在AssemblyRef表中,包含了构成程序集强名称的各个部分 —名称(无扩展名和路径),版本,语言文化和公钥。(StrongNameDLL, Version=1.0.0.0, Culture=neutral
阅读全文