注释
此内容由 Pearson Education, Inc. 的许可从 框架设计指南:可重用 .NET 库的约定、习惯和模式(第 2 版)重新打印。 该版于2008年出版,此后该书已于 第三版全面修订。 此页上的一些信息可能已过期。
System.Attribute 是用于定义自定义属性的基类。
属性是可添加到编程元素(如程序集、类型、成员和参数)的注释。 它们存储在程序集的元数据中,可以使用反射 API 在运行时访问它们。 例如,框架定义了ObsoleteAttribute,可以应用于类型或成员,以指示该类型或成员已被弃用。
属性可以有一个或多个属性,这些属性携带与该属性相关的其他数据。 例如,ObsoleteAttribute
可能包含有关其中某个类型或成员已弃用的版本的其他信息,以及替换已过时 API 的新 API 的说明。
应用属性时,必须指定属性的某些属性。 这些属性称为必需属性或必需参数,因为它们表示为位置构造函数参数。 例如,ConditionString的ConditionalAttribute属性是必需的属性。
应用属性时不一定必须指定的属性称为可选属性(或可选参数)。 它们由可设置的属性表示。 编译器提供特殊语法,用于在应用属性时设置这些属性。 例如,该 AttributeUsageAttribute.Inherited 属性表示可选参数。
✔️ DO 使用后缀“Attribute”命名自定义属性类。
✔️ 请务必将 AttributeUsageAttribute 应用于自定义属性。
✔️ 请为可选参数提供可设置的属性。
✔️ 请为必需的参数提供只能获取的属性。
✔️ 请提供构造函数参数来初始化与所需参数对应的属性。 每个参数的名称(尽管大小写不同)应与相应的属性相同。
❌ 避免提供构造函数参数来初始化与可选参数对应的属性。
换句话说,不要定义可以同时用构造函数和 setter 设置的属性。 此准则非常明确了哪些参数是可选的,哪些参数是必需的,并避免采用两种方式执行相同的作。
❌ 避免重载自定义属性构造函数。
只有一个构造函数清楚地向用户传达需要哪些参数,哪些参数是可选的。
✔️ 如果可能,请密封自定义属性类。 这使属性查找速度更快。
部分内容 © 2005, 2009 Microsoft 公司。 保留所有权利。
获得皮尔逊教育公司许可后重印自 框架设计准则:可重用 .NET 库的约定、习惯和模式 ,由 Krzysztof Cwalina 和 Brad Abrams 编写,并作为微软 Windows 开发系列中的出版物之一,于 2008 年 10 月 22 日由 Addison-Wesley Professional 出版。