• 特性Attribute


    1.简介

      特性(attribute)是被指定给某一声明的一则附加的声明性信息。

           在C#中,有一个小的预定义特性集合。在学习如何建立我们自己的定制特性(custom attributes)之前,我们先来看看在我们的代码中如何使用预定义特性。

    using System; 
    public class AnyClass 
    { 
        [Obsolete("Don't use Old method, use New method", true)] //这是一个特性,影响了Old函数
        static void Old( ) { }  
        static void New( ) { } 
        public static void Main( ) 
        { 
            Old( ); 
        } 
    }

        我们先来看一下上面这个例子,在这个例子中我们使用了Obsolete特性,它标记了一个不应该再被使用的程序实体。第一个参数是一个字符串,它解释了为什么该实体是过时的以及应该用什么实体来代替它。实际上,你可以在这里写任何文本。第二个参数的作用是当编译器使用这个过时的程序实体时报错,如果它的默认值是false,编译器就不会报错,而是产生一个警告。

    2.自己定制特性

      我们要从System.Attribute派生出我们自己的特性类(一个从System.Attribute抽象类继承而来的类,不管是直接还是间接继承,都会成为一个特性类。特性类的声明定义了一种可以被放置在声明之上新的特性)。

    using System; 
    public class HelpAttribute : Attribute 
    { 
    } 

      不管你是否相信,我们已经建立了一个定制特性,现在我们可以用它来装饰现有的类就好像上面我们使用Obsolete attribute一样,不过这个特性还没有起到什么作用。

      对一个特性类名使用Attribute后缀是一个惯例。然而,当我们把特性添加到一个程序实体,是否包括 Attribute后缀是我们的自由。编译器会首先在System.Attribute的派生类中查找被添加的特性类。如果没有找到,那么编译器会添加 Attribute后缀继续查找。

    3.向自己定制的特性里面放入内容

    详见刘昕鑫:https://www.cnblogs.com/liuxinxin/articles/2265672.html

    4.预定义特性

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

    • AttributeUsage
    • Conditional
    • Obsolete

    AttributeUsage 

      描述了如何使用一个自定义特性类。它规定了特性可应用到的项目的类型。

      

    Conditional

      这个预定义特性标记了一个条件方法,其执行依赖于指定的预处理标识符。

      它会引起方法调用的条件编译,取决于指定的值,比如 Debug 或 Trace。例如,当调试代码时显示变量的值。

    Obsolete

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

    详见菜鸟教程:http://www.runoob.com/csharp/csharp-attribute.html

  • 相关阅读:
    数据结构 练习 22-并查集以及图的最小生成树
    C# 上传RAR文件 解压 获取解压后的文件名称
    [置顶] 程序员学数据库那些事儿
    编程挑战:字符串的完美度
    Hibernate主键生成策略
    利用冒泡排序对数组进行排序
    小学生玩ACM----广搜
    CGContext绘图
    [置顶] 《Windows编程零基础》__2 一个完整的程序
    java 网络编程
  • 原文地址:https://www.cnblogs.com/wskxy/p/9219822.html
Copyright © 2020-2023  润新知