在本文中,我将举出两个程序——一个运行期间类信息报告程序和一个复杂的Hello World应用程序——这两个程序会演示后期绑定方法的调用。
System.Type类是.NET的Reflection API的基石。有了它,你就能够收集到你所需要的类型信息。所有类型都从System.Object继承到GetType方法,这个方法会返回一个代表这个类型定义的Type对象。它还可以通过向静态的Type.GetType方法传递类型的全限定名(例如,System.Threading.Thread)来创建一个不带实例变量的Type。
Type类包含的方法能够确定类型的基类(base class)是否为参照或值、任何方法、属性,或者类型的字段。表A是这些方法精选后的列表。
表A
方法/属性 |
解释 |
IsClass |
返回真,如果这个类型是个参考类型或者类 |
IsValueType |
返回真,如果这个类型是数值类型 |
IsArray |
返回真,如果这个类型是数组 |
IsCOMObject |
返回真,如果这个类型是COM对象 |
IsInterface |
返回真,如果这个类型是接口 |
IsSubclassOf |
返回真,如果这个类型是传递给方法的Type对象的子类 |
Namespace |
返回一个串,代表这个类所包含的全限定命名空间 |
GetConstructors |
返回一个ConstructorInfo对象的数组,代表这个类型所声明的所有构造函数 |
GetMethods |
返回一个MethodInfo对象的数组,代表这个类型所声明的所有方法 |
GetEvents |
返回一个EventInfo对象的数组,代表这个类型所声明的所有事件 |
GetFields |
返回一个FieldInfo对象的数组,代表这个类型所声明的所有字段 |
GetInterfaces |
返回一个Type对象的数组,代表这个类型所实现的所有接口 |
GetMembers |
返回一个MemberInfo对象的数组,代表这个类型所有成员(方法、字段、属性和构造函数) |
GetProperties |
返回一个PropertyInfo对象的数组,代表这个类型所声明的所有属性 |
InvokeMember |
允许程序员通过名字调用类型的方法 |
重要的Type信息方法