Welcome

首页 / 软件开发 / C# / C#反射命名空间浅析

C#反射命名空间浅析2011-04-04 博客园 LinderMan学习C#反射命名空间之前我们来看看C#反射的概念,反射是一个运行库类型发现的过 程。 通过反射可以得到一个给定程序集所包含的所有类型的列表,这个列表包括给定类 型中定义的方法、字段、属性和事件。也可以动态的发现一组给定类支持的借口、方法的 参数和其他相关信息如基类、命名空间、数据清单等。

C#反射命名空间详细介绍:

1.System.Reflection命名空间内的各类型

(1) Assembly通过它可以加载、了解和操纵一个程序集

(2) AssemblyName 通过它可以找到大量隐藏在程序集的身份中的信息,如版本信息、 区域信息等

(3) EventInfo 事件的信息

(4) FieldInfo 字段的信息

(5) MethodInfo 方法的信息

(6) ParameterInfo 参数的信息

(7) PropertyInfo 属性的信息

(8) MemberInfo 是抽象基类,为 EventInfo、FieldInfo 、MethodInfo、 PropertyInfo等类型定义了公共的行为。

(9) Module 用来访问带有多文件程序集的给定模块

2.System.Type类

System.Type支持的成员可以分为这样几类

(1) Is*** 用来检查一个类型的元数据,如IsAbstract、IsClass、IsValueType 等等

(2) Get*** 用来从类型得到指定项目,如GetEvent()得到类型的一个指定的事件 (EventInfo)。 另外,这些方法都有一个单数版本和一个复数版本。如GetEvent()对应 有一个复数版 本GetEvents(), 该方法返回一个相关的EventInfo数组

(3) FindMembers() 根据查询条件返回一个MemberInfo类型的数组

(4)GetType() 该静态方法根据一个字符串名称返回一个Type实例

(5)InvokeMember() 对给定项目进行晚期绑定

3.得到一个Type类型实例的三种方法

因为Type是一个抽象类,所以不能直接使用new关键字创建一个Type对象

(1)使用System.Object.GetType()

Person pe=new Person();
//---------定义pe为person类的一个对象
Type t=pe.GetType();