前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >怎么获取枚举的值_枚举是值类型吗

怎么获取枚举的值_枚举是值类型吗

作者头像
全栈程序员站长
发布2022-09-20 11:13:34
4.4K0
发布2022-09-20 11:13:34
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

最近在做一个学校的系统,其中用到一些枚举,可是在显示下拉列表时要绑定枚举的描述及其枚举值时就只一个一个的默认设死,这样不灵活。有没有其快捷方法?搜了下百度很多相关资料有了些许眉目,代码如下

1.首先定义枚举,这里要做显示学生状态的列表,如下所示

代码语言:javascript
复制
 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)

代码语言:javascript
复制
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方法如下

代码语言:javascript
复制
 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 }

完毕!!!

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168237.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档