大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
最近在做一个学校的系统,其中用到一些枚举,可是在显示下拉列表时要绑定枚举的描述及其枚举值时就只一个一个的默认设死,这样不灵活。有没有其快捷方法?搜了下百度很多相关资料有了些许眉目,代码如下
1.首先定义枚举,这里要做显示学生状态的列表,如下所示
1 /// <summary> 2 /// 学生状态 3 /// </summary> 4 public enum StudentStatusEnum 5 { 6 /// <summary> 7 /// 在读 8 /// </summary> 9 [Description("在读")] 10 Study = 0, 11 12 /// <summary> 13 /// 毕业 14 /// </summary> 15 [Description("毕业")] 16 Graduate = 1, 17 18 /// <summary> 19 /// 退学 20 /// </summary> 21 [Description("退学")] 22 Leave = 2, 23 24 /// <summary> 25 /// 休学 26 /// </summary> 27 [Description("休学")] 28 Suspend = 3 29 }
2.循环取枚举属性,Enum.GetNames这个方法是获取枚举定义的属性(如Study),Enum.GetValues这个方法是获取枚举定义的属性值(如0)
1 foreach (var em in Enum.GetNames(typeof(StudentStatusEnum))) 2 { 3 var value = (int)Enum.Parse(typeof(StudentStatusEnum), em); 4 var name = ((StudentStatusEnum)Enum.Parse(typeof(StudentStatusEnum), em)).GetDescription(); 5 lst.Add(new BusinessObject { Name=name,Code=value.ToString()}); 6 }
3.GetDescription方法如下
1 public static string GetDescription(this object o) 2 { 3 return GetEnumAtribute(o); 4 } 5 6 public static string GetEnumAtribute(object obj) 7 { 8 if (obj == null) 9 return string.Empty; 10 var o = GetCustomAttribute<DescriptionAttribute>(obj); 11 if (o != null) 12 return o.Description; 13 return obj.ToString(); 14 } 15 16 public static ATT GetCustomAttribute<ATT>(object o) where ATT : Attribute 17 { 18 if (o == null) 19 return default(ATT); 20 System.Reflection.FieldInfo f = o.GetType().GetField(o.ToString()); 21 if (f == null) 22 return default(ATT); 23 var a = f.GetCustomAttributes(typeof(ATT), true).FirstOrDefault(); 24 if (a == null) 25 return default(ATT); 26 else 27 return (ATT)a; 28 }
完毕!!!
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168237.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...