特性这个东西哥用的实在太少了,或者有些地方用了自己也不知道,好像在反序列化的地方用过,别的地方用到的很少,博客园里面也有文章说特性,拜读了下,觉得懂了点,但是还是觉得不知道啥时候用,选了一个例子,它代表了我的理解吧,我目前觉得它的用途就是这样
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace A0070_CustomAttributes.Sample { /// <summary> /// 这个类为其他类定义 附加属性 /// </summary> [AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct)] class Creator : System.Attribute { String name; String date; String version; /// <summary> /// 构造函数. /// </summary> /// <param name="name"> 用户名 </param> /// <param name="date"> 日期 </param> /// <param name="version"> 版本 </param> public Creator(String name, String date, String version) { this.name = name; this.date = date; this.version = version; } /// <summary> /// 显示细节信息. /// </summary> public void ShowInfo() { Console.WriteLine("name : {0}", name); Console.WriteLine("date : {0}", date); Console.WriteLine("version : {0}", version); } } /// <summary> /// 用于 测试 属性类的 /// </summary> [Creator("Edward", "2010.9.15", "1.0")] class Test1 { } /// <summary> /// 用于 测试 属性类的 /// </summary> [Creator("Kimi", "2010.9.14", "1.2")] class Test2 { } /// <summary> /// 用于 测试 属性类的 /// /// 注意: 这里的 Test3 继承了 Test2 /// /// Test2 与 Test3 均有属性 /// </summary> [Creator("Ivy", "2010.9.13", "1.1")] class Test3 : Test2 { } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using A0070_CustomAttributes.Sample; namespace A0070_CustomAttributes { class Program { public static void PrintAttributeInfo(Type classType) { Console.WriteLine("{0}这个类的属性如下:", classType); object[] attr = classType.GetCustomAttributes(true); foreach (object o in attr) { Console.WriteLine("Attribute {0}", o); // 假如对象是 Creator 的实例,那么再调用 具体的方法. if (o is Creator) { ((Creator)o).ShowInfo(); } } } static void Main(string[] args) { PrintAttributeInfo(typeof(Test1)); PrintAttributeInfo(typeof(Test2)); PrintAttributeInfo(typeof(Test3)); Console.ReadLine(); } } } 运行结果如下: A0070_CustomAttributes.Sample.Test1这个类的属性如下: Attribute A0070_CustomAttributes.Sample.Creator name : Edward date : 2010.9.15 version : 1.0 A0070_CustomAttributes.Sample.Test2这个类的属性如下: Attribute A0070_CustomAttributes.Sample.Creator name : Kimi date : 2010.9.14 version : 1.2 A0070_CustomAttributes.Sample.Test3这个类的属性如下: Attribute A0070_CustomAttributes.Sample.Creator name : Ivy date : 2010.9.13 version : 1.1