特性(Attribute)是用于在运行时传递程序中各种元数据(类、方法、结构、枚举、组件)的行为性声明标签。
特性用于添加元数据,如编译器指令和注释、描述、方法、类等其他信息。
.NET 框架提供了两种类型的特性:预定义特性和自定义特性。
Net 框架提供了三种预定义特性:
- Conditional 这个预定义特性标记了一个条件方法,其执行依赖于他的预处理标识符。
//可以注释#define指令看看效果。
#define TRACE_ON
using System;
using System.Diagnostics;
public class Trace
{
[Conditional("TRACE_ON")]
public static void Msg(string msg)
{
Console.WriteLine(msg);
}
}
public class ProgramClass
{
static void Main()
{
Trace.Msg("Now in Main...");
Console.WriteLine("Done.");
Console.ReadKey();
}
}
- Obsolete 这个预定义标记了不应被使用的程序实体。
参数 message,是一个字符串,描述项目为什么过时的原因以及该替代使用什么。
参数 iserror,是一个布尔值。如果该值为 true,编译器应把该项目的使用当作一个错误。
默认值是 false(编译器生成一个警告)。
using System;
public class MyClass
{
[Obsolete("Don't use OldMethod, use NewMethod instead", true)]
static void OldMethod()
{
Console.WriteLine("It is the old method");
}
[Obsolete("Don't use OldMethod, use NewMethod instead", false)]
static void NewMethod()
{
Console.WriteLine("It is the new method");
}
public static void Main()
{
OldMethod();
NewMethod();
Console.ReadKey();
}
}
AttributeUsage
http://www.cnblogs.com/stzyw/archive/2005/10/07/249693.html
http://www.w3cschool.cc/csharp/csharp-attribute.html