使用Reflection获取.NET类的信息

ZDNet软件频道 时间:2002-10-17 作者:BUILDER.COM |  我要评论()
本文关键词:
在.NET中,大多数Reflection API类包容在System.Reflection命名空间内,它们能让开发人员在运行期间确定类型信息,并完成后期绑定方法的调用。在本文中,我将举出两个程序演示后期绑定方法的调用。
有时你可能需要在运行期间查询一个对象的成员,或者甚至是在不知道确切类型的情况下对这个对象调用对象。有些人会把后一个任务当作后期绑定,或者叫Idispatch方法的调用。在.NET中,大多数Reflection API类包容在System.Reflection命名空间内,它们能让开发人员在运行期间确定类型信息,并完成后期绑定方法的调用。Reflection也是Visual Studio .NET的Intellisense在你编写代码时,用这些方法表和参数表提示你的一个办法。

在本文中,我将举出两个程序——一个运行期间类信息报告程序和一个复杂的Hello World应用程序——这两个程序会演示后期绑定方法的调用。

用System.Type获得类型信息

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信息方法


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134