C#:特性

什么是特性?
特性(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/

posted @ 2022-02-19 15:01  码上的飞鱼  阅读(49)  评论(0)    收藏  举报