收藏 分享(赏)

C#通过反射获取类自定义特性描述列表.doc

上传人:hwpkd79526 文档编号:7227992 上传时间:2019-05-10 格式:DOC 页数:4 大小:59.50KB
下载 相关 举报
C#通过反射获取类自定义特性描述列表.doc_第1页
第1页 / 共4页
C#通过反射获取类自定义特性描述列表.doc_第2页
第2页 / 共4页
C#通过反射获取类自定义特性描述列表.doc_第3页
第3页 / 共4页
C#通过反射获取类自定义特性描述列表.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、C#通过反射获取类自定义特性描述列表OO 真的是个有趣的东西,我们都知道,创建类的时候,我们可以声明属性(property)、字段(field)等,而特性(Attribute)为人注意。在.NET 中,特性使用,可分 为.NET 自带特性(如Description)和自定义特性。由于需求需要,本人粗浅研究了一下自定义特性的使用,下面就返回类的自定义特性描述列表进行梳理。自定义特性类:public class ImportHeaderAttribute : System.Attributepublic string ImportHeader get; set; public int Index

2、get; set; public ImportHeaderAttribute(string header, int index)ImportHeader = header;Index = index;获取类自定义特性描述列表方法:/ / 获取类自定义特性描述列表/ / 目标类/ 自定义特性类/ 自定义特性/ 排序特性(升序),默认 null 不排序/ 返回类自定义特性描述列表,Key: 属性 (字段),value:特性描述public static IList GetDescriptionList(string cusName, string index = null)tryList clas

3、sList = new List();List indexList = new List();string key = string.Empty;string value = string.Empty;#region 循环目标类属性foreach (PropertyInfo pro in typeof(T).GetProperties()/循环目标类属性 var attridures = pro.GetCustomAttributes(typeof(A), true);/自定义特性集合key = pro.Name;A a = default(A);foreach (object att in

4、attridures)a = (A)att;/转换为自定义特性类对象var aInfo = a.GetType().GetProperty(cusName);/获取对应特性的属性对象if (aInfo != null)value = aInfo.GetValue(a).ToString();classList.Add(new KeyValuePair(key, value);/赋值 if (!string.IsNullOrEmpty(index)var aInfo2 = a.GetType().GetProperty(index);if (aInfo2 != null)value = aInf

5、o2.GetValue(a).ToString();indexList.Add(new KeyValuePair(key, value);#endregion#region 循环目标类字段foreach (FieldInfo Field in typeof(T).GetFields()var attridures = Field.GetCustomAttributes(typeof(A), true);/自定义特性集合key = Field.Name;A a = default(A);foreach (object att in attridures)a = (A)att;/转换为自定义特性类

6、对象var aInfo = a.GetType().GetProperty(cusName);/获取对应特性的属性对象if (aInfo != null)value = aInfo.GetValue(a).ToString();classList.Add(new KeyValuePair(key, value);/赋值 if (!string.IsNullOrEmpty(index)var aInfo2 = a.GetType().GetProperty(index);if (aInfo2 != null)value = aInfo2.GetValue(a).ToString();indexL

7、ist.Add(new KeyValuePair(key, value);#endregionif (classList.Count = indexList.Count)indexList = indexList.OrderBy(x = x.Value).ToList();List orderList = new List();foreach (var item in indexList)orderList.Add(classList.FirstOrDefault(x = string.Equals(x.Key, item.Key);return orderList;return classList;catch (Exception ex)return new List();完。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报