-
Notifications
You must be signed in to change notification settings - Fork 22
特性(Attribute)
L edited this page Mar 19, 2020
·
3 revisions
摘抄自C# 特性(Attribute)、C# 反射(Reflection)
特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在它所应用的元素前面的方括号([ ])来描述的。
特性(Attribute)用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。.Net 框架提供了两种类型的特性:预定义特性
和自定义特性
。
预定义特性 AttributeUsage 描述了如何使用一个自定义特性类。它规定了特性可应用到的项目的类型
预定义特性Conditional标记了一个条件方法
,其执行依赖于它顶的预处理标识符
预定义特性Obsolete标记了不应被使用的程序实体。它可以让您通知编译器丢弃
某个特定的目标元素。例如,当一个新方法被用在一个类中,但是您仍然想要保持类中的旧方法,您可以通过显示一个应该使用新方法,而不是旧方法的消息,来把它标记为 obsolete(过时的)
常见于废弃方法、废弃类,用于提示开发者及时修改代码,一般会在下一个版本删去过时的方法或类
.Net 框架允许创建自定义特性,用于存储声明性的信息,且可在运行时被检索。该信息根据设计标准和应用程序需要,可与任何目标元素相关
创建并使用自定义特性包含四个步骤:
1.声明自定义特性
2.构建自定义特性
3.在目标程序元素上应用自定义特性
4.通过反射访问特性
一个新的自定义特性应派生自 System.Attribute
类
// 一个自定义特性 BugFix 被赋给类及其成员
[AttributeUsage(AttributeTargets.Class |
AttributeTargets.Constructor |
AttributeTargets.Field |
AttributeTargets.Method |
AttributeTargets.Property,
AllowMultiple = true)]
public class DeBugInfo : System.Attribute
完成功能
通过把特性放置在紧接着它的目标之前,来应用该特性
[DeBugInfo(45, "Zara Ali", "12/8/2012", Message = "Return type mismatch")]
[DeBugInfo(49, "Nuha Ali", "10/10/2012", Message = "Unused variable")]
class Target