.NET反射机制深入解析
1. 概述
在.NET编程中,反射是一项强大的功能,它允许程序在运行时获取类型信息、创建对象、调用方法等。本文将深入探讨.NET反射中的一些关键概念,包括 Module
、 MemberInfo
、 Type
和 TypeInfo
,以及泛型类型的处理。
2. Module类
Module
类在.NET反射中扮演着特定的角色。从结构上看, Assembly
可以看作是 Module
对象的容器。不过在.NET中,.NET Framework支持将一个程序集的内容拆分到多个文件(模块)的特性很少被使用,所以在大多数情况下,我们可以忽略 Module
类型,使用反射API中的其他类型就能满足需求。
但有一个例外情况,在运行时生成代码的API要求我们指定生成的代码应该包含在哪个模块中,即使只创建一个模块也是如此。
Module
类还提供了一个令人意外的服务,它定义了 GetField
、 GetFields
、 GetMethod
和 GetMethods
属性,这些属性可以让我们访问全局作用域的方法和字段。在C#中,我们看不到这些全局作用域的成员,因为C#要求所有字段和方法都必须定义在类型内部,但CLR是允许全局作用域的方法和字段的