创建
public class HellowAttribute:Attribute
{
public int ID { get; set; }
public string Name { get; set; }
public void SayHi()
{
Console.WriteLine("Hi");
}
public void SayHi(string name)
{
Console.WriteLine("Hi {0}",name);
}
}
创建的时候需要注意
1、需要继承Attribute
2、类名要以Attribute结尾
使用的时候如下,要注意,在不设置的情况下,一个特性,只能写一种,当然可以设置成多个Hellow一起写在上面
特性可以写在类上,方法,字段,属性上,都是可以的
//[Hellow]
//[HellowAttribute]//全名和上面不带Attribute都可以
//[Hellow()]//调用无参
//[Hellow("凹凸曼")]//调用带一个参数的构造函数
//[Hellow(ID=1,Name="张三")]//赋值
public class DemoClass
{
}
特性的作用
特性的作用就是在不影响修饰对象的前提下,额外的给它增加一些备注信息
备注信息的作用是可以通过反射获取
例子:
枚举中使用的Remark如何获取
创建一个RemarkAttribute
public class RemarkAttribute:Attribute
{
private string _Sname;
public RemarkAttribute(string sname)
{
_Sname = sname;
}
public string Sname { get {return _Sname; } }
}
通过一个GetRemak类的Get方法 获取Sname 需要注意 为了方便,做成了扩展方法,并且类和方法都是静态
public static class GetRemak
{
public static string Get(this Enum shuiguo)
{
//获得类型
Type type = shuiguo.GetType();
//获取该类型中的字段
FieldInfo fiel = type.GetField(shuiguo.ToString());
//获取字段上面的Attribute
RemarkAttribute r=(RemarkAttribute)fiel.GetCustomAttribute(typeof(RemarkAttribute));
return r.Sname;
}
}
应用
ShuiGuo.PingGuo.Get()