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

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

 

完毕!!!

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 项目活动图 – 举例说明

    项目活动图 – 举例说明关键路径:从开始到结束的所有路径中,时间最长的一条为关键路径。(特点:在关键路径上,所有任务的松弛时间都为0);松弛时间:第一种方法:最晚开始时间-最早开始时间;第二种方法:关键路径的总时间-包含该任务的任务路径花的时间;(前提条件:必须不影响该任务以后的任务路径)举例:关键路径:A-B-D-G-I-K-L=22由前向后推可得出…

  • vue JS 对象转数组[通俗易懂]

    vue JS 对象转数组[通俗易懂]option:{ head:{ title:”日期”, name:date, width:180 }, data:{ date:”2021-05-27″, name:”张三”, address:”上海市浦东新区XX路XX号” } }转数组:letoption=this.option;letArr=Object.keys(option).map(k

  • 破产姐妹第一季/全集2 Broke Girls迅雷下载

    破产姐妹第一季/全集2 Broke Girls迅雷下载

  • Markdown基本语法

    Markdown基本语法

  • 我的世界区块显示_我的世界怎么显示区块线

    我的世界区块显示_我的世界怎么显示区块线我的世界手游区块是一个独特的机制,很多玩家对于区块是什么不太了解,区块显示指令以及区块的产生不是很熟悉,为了帮助到大家,今天小编就为大家带来我的世界手游区块显示指令分享:区块玩法操作详解的内容,希望大家能够喜欢,下面就让我们一起来看看吧!区块相关1.出生点区块在出生点附近的区块是一块围绕世界出生点的区域中的一个区块,只要有玩家在主世界,它就不会被从内存中卸载。这意味着像红石元件和刷怪会继续,甚至所…

  • 用vim 编辑文件时报错E325: ATTENTION

    用vim 编辑文件时报错E325: ATTENTION当我们用vim编辑文件时,出现E325:ATTENTION报错[root@www~]#vim/etc/named.rfc1912.zonesE325:ATTENTIONFoundaswapfilebythename”/etc/.named.rfc1912.zones.swp”ownedby:rootdated:ThuF…

发表回复

您的电子邮箱地址不会被公开。

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