什么是特性?
特性(attribute)是一种允许我们向程序的程序集添加元数据的语言结构.它是用于保存程序结构信息的某种特殊类型的类.
将应用了特性的程序结构叫做目标.
设计用来获取和使用元数据的程序(对象浏览器)叫做特性的消费者
.NET预定了很多特性,我们也可以声明自定义特性.
就好像给类打的一个“标签”
[Online] //这就是特性,用[]标记 class Student : Person{ }
Online特性本质上是一个继承了Attribute的类。
//必须继承自Attribute class OnlineAttribute : Attribute{ }
Attribute语法特点
- 可适用(附着)于任何“目标元素”,包括:类、类成员、enum、delegate、assembly……(AttributeUsage指定)
- 一个目标元素可以被附着多个Attribute
- 可以像方法一样接受参数
- 构造函数和方法等不会自动执行,直到显式的获取……
[Online(Fee = 986)] class Student { public Student() { Console.WriteLine("Student is init..."); } [Online("西安")] public void Learn(string major) { Console.WriteLine($"I'm Learning {major}..."); } }
//只能适用于:Class和Method [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] class OnlineAttribute : Attribute { public OnlineAttribute() { Console.WriteLine("Online is init..."); } //构造函数的参数可以在Attribute标记时赋值 public OnlineAttribute(string city) { Console.WriteLine($"study in {city}"); } //属性可以在Attribute标记时赋值 public double Fee { get; set; } //Attribute中同样可以有方法 public void Supervise() { } }
自定义的Attribute类名建议使用Attribute后缀,但使用时可以省略该后缀
文章转载自:软件开发平台
地址:https://www.hocode.com/