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

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


相关推荐

  • 搭建nexus3私库简要步骤

    搭建nexus3私库简要步骤搭建nexus私库简要步骤:安装nexus登录nexus页面端默认地址http://loaclhost:8081登录nexus账号默认admin/admin123maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jarmaven-releases:私库发行版jar,初次安装请将Deploymentpolicy设置为Allowredeploymaven-snapshots:私库快照(调试版本)jarm

    2022年7月18日
    14
  • 二进制与十进制的讲解与转换「建议收藏」

    二进制与十进制的讲解与转换「建议收藏」文章目录?什么是十进制呢??什么是二进制??十进制和二进制之间可以转换吗??十进制与二进制之间的转换?二进制转十进制?十进制转二进制?写在最后哈喽,大家好!这是我的第一篇博客,就先来介绍一下自己吧,我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在CSDN上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。本文主要讲解二进制以及进制之间的转换,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎❤️点赞

    2022年10月18日
    0
  • Unity与 SO 交互 ☀️| 详细讲解 怎样通过 Android Studio 生成一个.so文件 并简单调用!

    Unity与 SO 交互 ☀️| 详细讲解 怎样通过 Android Studio 生成一个.so文件 并简单调用!本文章是Unity与SO交互的内容,详细的将每一步都做了介绍,生成一个so文件其实很简单!该专栏还有多篇优质内容在等待你观看。

    2022年7月21日
    15
  • 快速搭建自己的直播服务器,完成属于你的直播服务。

    快速搭建自己的直播服务器,完成属于你的直播服务。通过本文您能学到以下内容:1、动手搭建直播服务器,完成一次对移动端支持的直播。2、使用OBS推流。3、使用html5网页播放m3u8流媒体文件。一、动手搭建流媒体服务器这里我们选用开源srs流媒体服务器[https://github.com/ossrs/srs],有兴趣的同学也可选用[AdobeMediaServer5],原理都是一样的。安装方法在[https://…

    2022年6月11日
    129
  • EL表达式详解

    EL表达式详解一、EL表达式简介EL全名为ExpressionLanguage。EL主要作用:1、获取数据EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域中检索java对象、获取数

    2022年7月2日
    18
  • ubuntu18.04安装ROS Melodic(最详细配置)[通俗易懂]

    ubuntu18.04安装ROS Melodic(最详细配置)[通俗易懂]设置软件源:国外的:sudosh-c’echo”debhttp://packages.ros.org/ros/ubuntu$(lsb_release-sc)main”>/etc/apt/sources.list.d/ros-latest.list’国内的,速度快:sudosh-c’./etc/lsb-release&&ec…

    2022年6月14日
    40

发表回复

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

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