一、C#自带特性
1.AttributeUsage特性(自定义特性的特性)
[AttributeUsage(validon,AllowMultiple=allowmultiple,Inherited=inherited)]
(1)validon表示 特性可以提供给什么类型
All 可以对任何应用程序元素应用属性
Assembly 可以对程序集应用属性
Class 可以对类应用属性
Constructor 可以对构造函数应用属性
Delegate 可以对委托应用属性
Enum 可以对枚举应用属性
Event 可以对事件应用属性
Field 可以对字段应用属性
GenericParameter 可以对泛型参数应用属性 目前,此属性仅可应用于 C#、Microsoft 中间语言 (MSIL) 和已发出的代码中
Interface 可以对接口应用属性
Method 可以对方法应用属性
Module 可以对模块应用属性 Module 引用的是可移植可执行文件(.dll 或 .exe),而不是 Visual Basic 标准模块
Parameter 可以对参数应用属性
Property 可以对属性 (Property) 应用属性 (Attribute)
ReturnValue 可以对返回值应用属性
Struct 可以对结构应用属性,即值类型
//表示该属性可以给类和方法用 AttributeTargets.Class| AttributeTargets.Method
(2)AllowMultiple 可选
AllowMultiple = true 表示可以和其他特性叠加
(3)Inherited 可选
AllowMultiple = true 是否可以被继承
2.Conditional特性
调用的方式是否在debug或者release下执行
class Program { static void Main(string[] args) { Program program = new Program(); program.fuc(); } //只有release下才执行 //[Conditional("RELEASE")] //只有debug下才执行 [Conditional("DEBUG")] void fuc() { Console.Write("OK"); } }
3.Obsolete
标记方法过时
还可以添加第二个参数,参数2是bool值
参数2为true时,编译时直接报错,不允许编译,直接报错
二、Attribute类