• C#特性


      一、概念:C#的特性也是一个类,继承自System.Attribute,用于描述类、方法、字段等

       

         二、类型:

         2.1  .net中特性用来处理多种问题,比如序列化、程序的安全特性、防止即时编译器对程序代码进行优化从而代码容易调试等等。

          定制特性的本质上是一个类的元素上去添加附加信息,并在运行其通过反射得到该附加信息(在使用数据实体对象时经常用到)

            2.2  Attribute 作为编译器的指令时的应用

               Conditional:起条件编译的作用,只有满足条件,才允许编译器对它的代码进行编译。一般在程序调试的时候使用

               DllImport: 用来标记费.net的函数,表明该方法在一个外部的DLL中定义。

               Obsolete: 这个属性用来标记当前的方法已经废弃,不再使用

               注:Attribute是一个类,因此DllImport也是一个类,Attribute类是在编译的时候实例化,而不是像通常那样在运行时实例化。

               CLSCompliant: 保证整个程序集代码遵守CLS,否则编译将报错。

            2.3   自定义特性

         AttributeTargets.All :可以应用到任何元素。比如:类、字段、方法、属性等。AttributeTargets.Class 表示只能用在类上,不能用在方法或字段等,否则编译器会报错!

                  AllowMultiple=true: 表示可以多少使用,能否被重复放在同一个程序实体前多次。比如:可以应用在多个类或者方法,要看AttributeTargets的属性,若是AttributeTargets.Class,表示可以应用在多个

           类。

           Inherited=false:false表示不能继承到派生类,也就是说不能用在派生类。

        

     1 //限定特性类的应用范围  
     2 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Field, AllowMultiple = true, Inherited = false)]  
     3 //定制MsgAttribute特性类,继承于Attribute  
     4 public class ClassMsgAttribute : Attribute  
     5 {  
     6     //定义_msg字段和Msg属性//Msg属性用于读写msg字段  
     7     string _msg;  
     8     public string Msg { get { return _msg; } set { _msg = value; } }  
     9     public ClassMsgAttribute() { }  
    10     //重载构造函数接收一个参数,赋值给_msg字段  
    11     public ClassMsgAttribute(string s) { _msg = s; }   
    12 }  
     1 //在Person类上标记ClassMsg特性  
     2 [ClassMsg(Msg = "这是关于人的姓名信息的类")]  
     3 class Person  
     4 {  
     5     //在_name字段上应用ClassMsg特性  
     6     [ClassMsg("这是存储姓名的字段")]  
     7     string _name;  
     8     //以下特性无法应用,因为MsgAttribute定义的特性只能用于类和字段  
     9     //[ClassMsg("这是读写姓名字段的属性")]  
    10     public string Name { get { return _name; } set { _name = value; } }  
    11 }  

    转载自:http://blog.csdn.net/helloguonan/article/details/5912032

    参考:http://www.kuqin.com/dotnet/20080628/10196.html 

             

          

  • 相关阅读:
    用C#设置系统时间和本地时间
    在ASP.NET中使用Session常见问题集锦 收藏
    C#开源资源大汇总(2)
    漫谈ASP.NET设计中的性能优化问题
    比较著名的.net技术论坛名称(含国外的)
    在ASP.NET 2.0中,一个ASP.NET页面的生命周期
    DataGrid技巧大集合(转载)
    Silverlight经典教程书籍汇总
    Asp.Net细节性问题技巧精萃
    C#开源资源大汇总(1)
  • 原文地址:https://www.cnblogs.com/luyuwei/p/3655102.html
Copyright © 2020-2023  润新知