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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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         }

 

完毕!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号