Attribute 创建 作用 如何使用

来源:互联网 发布:专业销售数据采集器 编辑:程序博客网 时间:2024/05/16 03:47

创建

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()



0 0