利用C#反射来查看自定义特性信息与查看其他信息类似,首先基于类型(本例中是DemoClass)获取一个Type对象,然后调用Type对象的GetCustomAttributes()方法,获取应用于该类型上的特性。当指定GetCustomAttributes(Type attributeType, bool inherit) 中的***个参数attributeType时,将只返回指定类型的特性,否则将返回全部特性;第二个参数指定是否搜索该成员的继承链以查找这些属性。
C#反射:代码
- class Program {
- static void Main(string[] args) {
- Type t = typeof(DemoClass);
- Console.WriteLine("下面列出应用于 {0} 的RecordAttribute属性:" , t);
- // 获取所有的RecordAttributes特性
- object[] records = t.GetCustomAttributes(typeof(RecordAttribute), false);
- foreach (RecordAttribute record in records) {
- Console.WriteLine(" {0}", record);
- Console.WriteLine(" 类型:{0}", record.RecordType);
- Console.WriteLine(" 作者:{0}", record.Author);
- Console.WriteLine(" 日期:{0}", record.Date.ToShortDateString());
- if(!String.IsNullOrEmpty(record.Memo)){
- Console.WriteLine(" 备注:{0}",record.Memo);
- }
- }
- }
- }
输出为:
下面列出应用于 AttributeDemo.DemoClass 的RecordAttribute属性:
AttributeDemo.RecordAttribute
类型:更新
作者:Matthew
日期:2008-1-20
备注:修改 ToString()方法
AttributeDemo.RecordAttribute
类型:更新
作者:Jimmy
日期:2008-1-18
AttributeDemo.RecordAttribute
类型:创建
作者:张子阳
日期:2008-1-15
好了,到了这一步,我想将这些数据录入数据库中将不再是个问题,我们关于C#反射查看自定义特性的章节也就到此为止了。
【编辑推荐】