VB.NET中的反射、特性与对象序列化
1. 反射与特性基础
1.1 反射与特性简介
反射是VB.NET检查类(和程序)内部工作机制的能力。通过反射,我们可以发现类中声明的数据类型、定义的方法以及类定义的其他特征。除了发现这些被称为元数据的信息外,还可以使用反射来调用方法,使类方法的行为类似于标准子程序。
特性则允许我们创建自己的元数据,可用于许多任务,包括创建“智能”注释和对象序列化。VB.NET中有许多预定义的特性,我们也可以创建自定义特性类。
1.2 特性的类型
特性分为两种类型:自定义特性和固有特性。
| 特性类型 | 描述 |
| ---- | ---- |
| 固有特性 | 是在创建VB.NET程序时由系统自动应用的特性,但程序员仍需将其添加到代码中,编译器才能识别,该特性本身由VB.NET预定义。 |
| 自定义特性 | 是由程序员添加到程序中的特性,可用于跟踪类定义的更改等。 |
1.3 特性的工作原理
当特性添加到程序中时,编译器会在生成的MSIL代码中插入一个特性对象。当公共语言运行时(CLR)遇到特性对象时,会执行该特性定义的服务。特性继承自 System.Attribute
类,这使得我们既能使用VB.NET代码中固有的固有特性,也能创建自定义特性。
2. 自定义特性的创建与使用
2.1 创建自定义特性的步骤
创建自定义特性一般需要以下步骤:
1. 声明类并继承 Attribute