利用特性扩展元数据

如果您使用过 C++,或许对包含关键字(如 public 和 private)的声明比较熟悉,这些关键字提供有关类成员的其他信息。 另外,这些关键字通过描述类成员对其他类的可访问性来进一步定义类成员的行为。 由于编译器被显式设计为识别预定义关键字,因此传统上您没有机会创建自己的关键字。 但是,公共语言运行时允许您添加类似关键字的描述性声明(称为特性)来批注编程元素,如类型、字段、方法和属性。

为运行时编译代码时,该代码被转换为 Microsoft 中间语言 (MSIL),并同编译器生成的元数据一起被放到可迁移可执行 (PE) 文件的内部。 特性使您得以向元数据中放置额外的描述性信息,并可使用运行时反射服务提取该信息。 当您声明从 System.Attribute 派生的特殊类的实例时,编译器会创建特性。

.NET Framework 出于多种原因使用特性并通过它们解决若干问题。 特性描述如何将数据序列化,指定用于强制安全性的特性,并限制实时 (JIT) 编译器的优化,从而使代码易于调试。 特性还可以记录文件名或代码作者,或在窗体开发阶段控制控件和成员的可见性。

可使用特性以几乎所有可能的方式描述代码,并以富有创造性的新方式影响运行时行为。 使用特性可以向 C#、Visual C++、Microsoft Visual Basic 2005 或其他任何以运行时为目标的语言添加自己的描述性元素,而不必重新编写编译器。

相关主题

标题

说明

应用特性

描述如何将特性应用到代码元素。

编写自定义特性

描述如何设计自定义特性类。

检索存储在特性中的信息

描述如何检索已加载到执行上下文中的代码的自定义特性。

元数据和自描述组件

提供元数据概述并描述元数据在 .NET Framework 可迁移可执行 (PE) 文件中的实现方式。

如何:将程序集加载到仅反射上下文中

解释如何在只反射上下文中检索自定义特性信息。

参考

System.Attribute