C# 特性(Attribute)

2019-04-25  本文已影响0人  东经20度

特性是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([])来描述的。
特性用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性和自定义特性。

1. 规定特性

语法:

[attribute(positional_parameters,name_parameters=value,...)]

特性的名称和值是在方括号内规定的,放置在它所运用的元素之前。positional_parameters 规定必需的信息,name_parameter 规定可选的信息。

2. 预定义特性

.Net 框架提供了三种自定义特性:

  1. AttributeUsage
  2. Conditional
  3. Obsolete

2.1 AttributeUsage

所处命名空间 System
预定义特性 AttributeUsage 描述了如何使用一个自定义特性类。它规定了特性可应用到的项目的类型。
语法:

[AttributeUsage(
   validon,
   AllowMultiple=allowmultiple,
   Inherited=inherited
)]

属性说明:

2.2 Conditional

所处命名空间:System.Diagnostics
这个预定义特性标记了一个条件方法,其执行依赖于指定的预处理标识符。
它会引起方法调用的条件编译,取决于指定的值,比如 Debug 或 Trace。
语法:
[Conditional(
conditionalSymbol
)]

2.3 Obsolete

所处命名空间:System
这个预定义特性标记了不应被使用的程序实体。它可以让您通知编译器丢弃某个特定的目标元素。例如,当一个新方法被用在一个类中,但是您仍然想要保持类中的旧方法,您可以通过显示一个应该使用新方法,而不是旧方法的消息,来把它标记为 obsolete(过时的)。
语法:

[Obsolete(
   message
)]
[Obsolete(
   message,
   iserror
)]

属性:

3. 自定义特性

.Net 框架允许创建自定义特性,用于存储声明性的信息,且可在运行时被检索。该信息根据设计标准和应用程序需要,可与任何目标元素相关。
创建并使用自定义特性包含四个步骤:

最后一个步骤包含编写一个简单的程序来读取元数据以便查找各种符号。元数据是用于描述其他数据的数据和信息。该程序应使用反射来在运行时访问特性。

3.1 声明自定义特性

一个新的自定义特性应派生自 System.Attribute 类。

上一篇 下一篇

猜你喜欢

热点阅读