- 有关程序及其类型的数据被称为元数据(metadata)保存在程序的程序集中
- 一个运行的程序查看本身的元数据或其他程序的元数据的行为叫做反射
- 使用 System.Reflection 命名空间
Type 类
- 前情概要
- BCL声明了 一个叫 Type抽象类,不能有实例
- 在运行时 CLR会创建从Type派生类的实例
- 访问实例时,CLR会返回Type基类的引用
- Type类的成员
- 属性
- Name
- Namespace
- Assembly
- 方法
- GetFields 返回类型的字段列表
- GetProperties 返回类型的属性列表
- GetMethods 返回类型的方法列表
- 属性
注意事项
- 不管创建的类型有多少实例,只有一个Type对象会关联到所有这些实例
- 对于程序中用到的每一个类型,CLR都会创建一个Type类型的对象
- 程序用到的每一个类型都会关联到独立的Type类对象(比如父类,子类,子类也会有相应的类型对象)
获取类型的方法
- object类型包含有一个GetType的方法,返回对实例Type对象的引用
- 每一个类型都是继承自object,可以在任何类型对象上使用GetType方法获得Type对象
Type t = myInstance.GetType();
- 通过typeof运算符来获取Type对象,只需要提供类型名作为操作数,就会返回Type对象的引用