• 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/

  • 相关阅读:
    CSS属性选择器
    JS中For循环中嵌套setTimeout()方法的执行顺序
    document.getElementsByTagName()方法的返回值
    常见浏览器及其内核
    git与svn的区别
    JS解析URL参数为对象
    CSS中的伪类和为伪元素
    CSS中:first-child伪类
    CSS链接使用伪类的顺序
    CSS行内框(内联元素)
  • 原文地址:https://www.cnblogs.com/frfwef/p/12761710.html
Copyright © 2020-2023  润新知