C#中反射基础与应用

反射

       反射是读取程序集中的元数据,使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性。

一、应用场景

      反射在下列的一些场景中使用,能起到很好的作用。

     1、需要访问程序元数据的属性。

     2、检查和实例化程序集中的类型。

    3、在运行时构建新类型。

    4、执行后期绑定,访问在运行时创建的类型的方法。

二、反射使用

     C#语言中反射主要基于System.Type类和System.Reflection命名空间下的一些类来实现。下表是与反射相关的类。

类名 描述
System.Type 可访问关于任何数据类型的信息。
System.AppDomain 用于加载和执行程序集
System.Activator 主要用于创建对象的实例。
System.Reflection.Assembly 访问给定程序集的相关信息或把这个程序集加载到程序中。
System.Reflection.Module 提供访问和操作模块的信息与功能。
System.Reflection.ConstructorInfo 发现类构造函数的属性并提供对构造函数元数据的访问权限。
System.Reflection.ParameterInfo 发现参数的属性并提供对参数元数据的访问权限。
System.Reflection.MethodInfo 发现方法的属性并提供对方法元数据的访问权限。
System.Reflection.PropertyInfo 发现属性 (Property) 的特性 (Attribute) 并提供对属性元数据的访问。
System.Reflection.FieldInfo 发现字段的属性并提供对字段元数据的访问权限。
System.Reflection.MemberInfo 获取有关成员属性的信息并提供对成员元数据的访问。

1、System.Type

       通过Type类可以访问关于任何数据类型的信息,在反射中起到核心的作用。Type是一个抽象的基类,有与每种数据类型对应的派生类。通过使用这个派生类的对象的方法、字段、属性来查找有关该类型的所有信息。Type也是许多反射功能的入口 。

属性

      Type提供的可用属性,都是只读的。使用这些属性可以确定数据的类型。Type 实现的属性可分下面三类。

1、与类相关的各种名称的字符串
名称 描述
Name 获取数据类型名。
FullName 获取数据类型的完全限定名,包含名称空间,但不包括程序集。
Namespace 获取定义数据类型的名称空间名。
2、获取Type对象的引用的属性
名称 描述
BaseType 获取该Type的基本类型。
UnderlyingSystemType 获取该类型的公共语言运行时提供的类型。
ReflectedType 获取用于获取该成员的类对象。
3、判断Type的类型的属性</

猜你喜欢

转载自blog.csdn.net/Funniyuan/article/details/143086210