反射中获取类的注解名

1.首先定义一个类

public  class cartcode
    {
        /// <summary>
        /// ID
        /// </summary>
        [DisplayName("ID")]
        public virtual int Id { get; set; }

        /// <summary>
        /// 标签Code
        /// </summary>
        [DisplayName("标签Code")]
        public virtual string Code { get; set; }

        /// <summary>
        /// 序列号
        /// </summary>
        [DisplayName("序列号")]
        public virtual string SerialNumber { get; set; }

    }

2.下面通过反射获取传递对象的属性,并通过自定义特性获取该对象的所有DisplayName自定义备注

 1         /// <summary>
 2         /// 获取对象属性注解名
 3         /// </summary>
 4         /// <typeparam name="T"></typeparam>
 5         /// <param name="model"></param>
 6         /// <returns></returns>
 7         public static List<string> GetDisPlayName<T>(T model) 
 8         {
 9             //获取该对象的所有属性
10             PropertyInfo []  propertyInfos = model.GetType().GetProperties();
11             List<string> disPlayName = new List<string>();
12             foreach (var item in propertyInfos)
13             {
14                 //获取该属性的自定义特性(这里是DisplayName),还有其他一些特性用法都是一样
15                 var attrs = item.GetCustomAttributes(typeof(DisplayNameAttribute), true);
16                 if (attrs[0] != null) 
17                 {
18                     disPlayName.Add(((DisplayNameAttribute)attrs[0]).DisplayName);
19                 }
20             }
21             return disPlayName;
22  
23         }

 3.最后调用就好了

 1 List<string> disPlayNames = GetDisPlayName(new cartcode()); 

posted @ 2020-08-26 15:14  teapus  阅读(179)  评论(1)    收藏  举报