反射获取枚举中的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()

浙公网安备 33010602011771号