属性 (Attribute) 概述

更新:2007 年 11 月

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

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

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

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

请参见

参考

System.Attribute

其他资源

利用属性扩展元数据