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

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


相关推荐

  • phpstorm激活码2022【中文破解版】

    (phpstorm激活码2022)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~747EFQ8BIF-eyJsaWNlb…

    2022年3月31日
    71
  • 最小二乘法 原理_高斯最小二乘法原理

    最小二乘法 原理_高斯最小二乘法原理概念:最小二乘法是一种熟悉而优化的方法。主要是通过最小化误差的平方以及最合适数据的匹配函数。作用:(1)利用最小二乘法可以得到位置数据(这些数据与实际数据之间误差平方和最小)(2)也可以用来曲线拟合实例讲解:有一组数据(1,6),(3,5),(5,7),(6,12),要找出一条与这几个点最为匹配的直线:y=A+Bx有如下方程:6=A+B5=A+3B…

    2025年8月5日
    2
  • ie9的兼容视图设置_ie9兼容性视图设置找不到

    ie9的兼容视图设置_ie9兼容性视图设置找不到ie9比ie8又向W3C标准靠近了一步,可能会导致原有的网页显示变乱;如果出现这种情况,选择ie9兼容性视图,网页显示就会正常。ie9分别有,为当前网页设置兼容性和为所有网站设置兼容性视图两种,下面分别说明:一、为当前网页设置兼容性视图1、快捷步骤:按alt键——工具——兼容性视图(V);或者按alt键——工具——按F12——浏览器模式(B):IE9——Internet…

    2022年9月8日
    3
  • 4k视频传输带宽_数字视频信号传输器

    4k视频传输带宽_数字视频信号传输器高清显示日渐普及,从720p,1080p,再到4K,8K分辨率,日常生活和商业应用中对视频清晰度要求越来越高,到目前4K基本普及。要实现4K视频的显示,大家可能会说,要买一台高清的投影仪,要一台高清的电视,要高清的显示屏,但是传输这块的媒介也不可忽视,作为连接视频源与显示设备的介质,它影响着信号是否稳定,画面是否流畅,视频是否清晰等多方面问题。下面我们来看看市面上主要的几种高清视频传输方案以及…

    2022年9月28日
    2
  • [Drupal学习一]Drupal安装和基本配置[通俗易懂]

    [Drupal学习一]Drupal安装和基本配置[通俗易懂]1.从官方网站上下载drupal-6.16 http://drupal.org/drupal-6.162.将下载的压缩包文件直接解压,放到apache的站点目录中。此时drupal的路径为WEB-SERVER/drupal3.访问站点http://localhost:8888/drupal/将进入drupal的安装页面。此时会提醒我们要拷贝重命名.sites/default/de…

    2022年7月20日
    16
  • c语言表白用代码(1)

    c语言表白用代码(1)不多说,直接上代码,有用拿走,侵权立删。希望大家尽早找到自己的另一半。#include&lt;stdio.h&gt;#include&lt;math.h&gt;#include&lt;stdlib.h&gt;#defineI20#defineR340#include&lt;string.h&gt;intmain(){charanswer[4];…

    2022年7月25日
    38

发表回复

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

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