登录 免费注册

学习笔记之C#反射Reflection

2019-06-03 13:54:47 1 评(0) 阅(146)

什么是反射 Reflection?

反射,Reflection [rɪˈflekʃn] 。反射提供描述程序集、模块和类型的对象(Type 类型)。 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后调用其方法或访问其字段和属性。 如果代码中使用了特性,可以利用反射来访问它们。

反射的用途

需要访问程序元数据中的特性时。 

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

在运行时构建新类型。 使用 System.Reflection.Emit 中的类。

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

查看类型信息

System.Type 类是反射的中心。 当反射提出请求时,公共语言运行时为已加载的类型创建 Type。 可使用 Type 对象的方法、字段、属性和嵌套类来查找该类型的任何信息。  

使用 Assembly.GetType 或 Assembly.GetTypes 从尚未加载的程序集中获取 Type 对象,传入所需类型的名称。 使用 Type.GetType 从已加载的程序集中获取 Type 对象。 使用 Module.GetType 和 Module.GetTypes 获取模块 Type 对象。  

一旦获取 Type 对象,可通过多种方式来查看该类型成员的相关信息。 例如,可调用 Type.GetMembers 方法查找所有类型的成员,获取一组描述当前类型各成员的 MemberInfo 对象。  

还可以使用 Type 类上的方法来检索按名称指定的一个或多个构造函数、方法、事件、字段或属性的相关信息。 例如,Type.GetConstructor 封装当前类的特定构造函数。如果有 Type,可使用 Type.Module 属性获取一个封装含该类型的模块的对象。 使用 Module.Assembly 属性查找一个封装含该模块的程序集的对象。 可以获取直接使用 Type.Assembly 属性封装类型的程序集。  


声明:

文章内容版权归作者所有,不代表本站任何观点;任何转载需经过作者授权。

领取人
西贝晴
用户评论 共 0 条评论
您尚未 登录
阅读排行