
反射(提供封装程式集、模组和类型的对象)
反射是一种计算机处理方式。有程式可以访问、检测和修改它本身状态或行为的这种能力。能提供封装程式集、类型的对象。(程式集包含模组,而模组包含类型,类型又包含成员。)
基本介绍
- 中文名:反射
- 外文名:reflection
- 基本释义:提供封装程式集、类型的对象
- 性质:计算机术语
- 套用领域:软体工程
用途
您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其栏位和属性。
1.使用 Assembly 定义和载入程式集,载入在程式集清单中列出的模组,以及从此程式集中查找类型并创建该类型的实例。
2.使用 Module 了解如下的类似信息:包含模组的程式集以及模组中的类等。您还可以获取在模组上定义的所有全局方法或其他特定的非全局方法。
3.使用 ConstructorInfo 了解如下的类似信息:构造函式的名称、参数、访问修饰符(如 public 或 private)和实现详细信息(如 abstract 或 virtual)等。
4.使用 Type 的 GetConstructors 或 GetConstructor 方法来调用特定的构造函式。
5.使用 MethodInfo 来了解如下的类似信息:方法的名称、返回类型、参数、访问修饰符(如 public 或 private)和实现详细信 息(如 abstract 或 virtual)等。使用 Type 的 GetMethods 或 GetMethod 方法来调用特定的方法。
6.使用 FieldInfo 来了解如下的类似信息:栏位的名称、访问修饰符(如 public 或 private)和实现详细信息(如 static)等;并获取或设定栏位值。
7.使用 EventInfo 来了解如下的类似信息:事件的名称、事件处理程式数据类型、自定义属性、声明类型和反射类型等;并添加或移除事件处理程式。
8.使用 PropertyInfo 来了解如下的类似信息:属性的名称、数据类型、声明类型、反射类型和唯读或可写状态等;并获取或设定属性值。
9.使用 ParameterInfo 来了解如下的类似信息:参数的名称、数据类型、参数是输入参数还是输出参数,以及参数在方法签名中的位置等。
优点:
1、反射提高了程式的灵活性和扩展性。
2、降低耦合性,提高自适应能力。
3、它允许程式创建和控制任何类的对象,无需提前硬编码目标类。
缺点:
1、性能问题:使用反射基本上是一种解释操作,用于栏位和方法接入时要远慢于直接代码。因此反射机制主要套用在对灵活性和拓展性要求很高的系统框架上,普通程式不建议使用。
缺点:
1、性能问题:使用反射基本上是一种解释操作,用于栏位和方法接入时要远慢于直接代码。因此反射机制主要套用在对灵活性和拓展性要求很高的系统框架上,普通程式不建议使用。
2、使用反射会模糊程式内部逻辑;程式设计师希望在原始码中看到程式的逻辑,反射却绕过了原始码的技术,因而会带来维护的问题,反射代码比相应的直接代码更複杂。
转载请注明出处海之美文 » 反射(提供封装程式集、模组和类型的对象)