反射获取枚举中的DisPlay描述文字

我们在开发项目的过程中经常用到枚举。在定义枚举的时候经常会写一些备注。不仅是为了方便自己以后阅读。这些文字在开发项目的过程中也经常大有用处。

比如在页面显示的时候经常用到这些文字。如果出现的频率过少,我当然可以选择写死。但是这显然不是一个好的办法,不仅仅不利于后期的维护。(项目中枚举的字段文字可能会被更改)

而且不符合编程思想,这时候我们就应该去动态获取枚举的备注文字。

1.定义一个枚举

 1  /// <summary>
 2     /// 动力形式
 3     /// </summary>
 4     public enum PowerType
 5     {
 6         /// <summary>
 7         /// 没有
 8         /// </summary>
 9         [Display(Name = "--")]
10         None,
11 
12         /// <summary>
13         /// 汽油+排量
14         /// </summary>
15         [Display(Name = "汽油")]
16         Gasoline,
17 
18         /// <summary>
19         /// 柴油+排量
20         /// </summary>
21         [Display(Name = "柴油")]
22         Diesel,
23 
24 
25     }

2.定义一个扩展方法,方法中的this表示是一个枚举的扩展方法(不了解扩展方法的可以去百度下https://www.cnblogs.com/lxblog/archive/2013/04/25/3041826.html这位博主大佬)

 1  public static class EnumExtensions
 2     {
 3         public static string GetDisplayName(this Enum eum) //加入this参数是Enum的扩展方法
 4         {
 5             var type = eum.GetType();//先获取这个枚举的类型
 6             var field = type.GetField(eum.ToString());//通过这个类型获取到值
 7             var obj = (DisplayAttribute)field.GetCustomAttribute(typeof(DisplayAttribute));//得到特性
 8             return obj.Name ?? "";
 9         }
10     }

3.最后一步就是调用l

 1 //调用 2 PowerType.Diesel.GetDisplayName() 

posted @ 2020-08-26 15:38  teapus  阅读(102)  评论(0)    收藏  举报