文档章节

C#实现枚举的相关操作

o
 osc_x4h57ch8
发布于 2018/04/24 14:45
字数 373
阅读 0
收藏 0

枚举中的Descript()描述值,以及枚举值是一种一一对应的关系。我们可以获取其描述值和枚举值,存放到字典中,

在实际的使用中我们就可以轻松的根据枚举值来获取其描述值,也可以通过枚举的描述值来获取其枚举值。

根据枚举值来获取其描述值如下:

        /// <summary>
        /// 根据枚举值来获取描述信息
        /// </summary>
        /// <param name="e">枚举值</param>
        /// <returns></returns>
        public static string GetEnumDesc(Enum e)
        {
            DescriptionAttribute[] descAttribute = (DescriptionAttribute[])e.GetType().GetField(e.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false);
            return descAttribute == null || descAttribute.Length == 0 ? string.Empty : descAttribute[0].Description;
        }

但是这种方法是比较单一的,只能根据一个枚举值来获取一个描述信息。

以下便可以实现获取所有的枚举值和秒速信息

 /// <summary>        

/// 根据枚举类型来获取枚举值和枚举描述信息        

/// </summary>        

/// <typeparam name="T"></typeparam>        

/// <returns></returns>        

public static Dictionary<int, string> GetValueAndDesc<T>()         {

            Dictionary<int, string> dic = new Dictionary<int, string>();            

try            

{                

foreach (FieldInfo item in typeof(T).GetFields())                

{                   

  if (item.FieldType.IsEnum)                 

    {               

          int key = (int)typeof(T).InvokeMember(item.Name, BindingFlags.GetField, null, null, null);                

         DescriptionAttribute[] descs = (DescriptionAttribute[])item.GetCustomAttributes(typeof(DescriptionAttribute), false);             

            if (descs.Length > 0 && !dic.ContainsKey(key))                

         {                          

                    dic.Add(key, descs[0].Description);                

         }               

      }          

       }         

    }          

   catch (Exception)        

     {                // throw;             }       

      return dic;

}

这样之后我们可以轻松的通过键值对来轻松的获取我们先要的值或者描述信息。

 

------------------------哇!我这都三年5个月的博客龄了,不过一直没有写博客,希望通过我们分享,能给有需要的朋友们带来帮助--------------

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

face-api.js 示例

该示例是基于GitHub的一个开源项目:https://github.com/justadudewhohacks/face-api.js 其核心的库是用js写的,所以它可以在web项目或nodejs 中使用 Html: <!DOCTYPE html><html lang="en......

Canaan_
4分钟前
5
0
树莓派4b + Ubuntu20.04 Server 安装Java8

安装环境: 树莓派4b + Ubuntu20.04 Server 32位 1. 下载jdk https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html 2. 解压 tar -zxvf jdk-8u251-linux-arm32-vf......

SummerGao
37分钟前
9
0
项目实战:Qt+OpenCV图像处理与识别算法平台

若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址:h...

红模仿_红胖子
40分钟前
7
0
北京智源大会 | AI + 医疗的下一个十年:从公共卫生预警到人类基因密码破解 道翰天琼认知智能api机器人接口。

医疗事关人身安全,要求极高,容错率极低,因此,知识壁垒和技术壁垒都很高。过去,AI系统更多的是服务于终端,辅助医生诊断、决策。但是,医疗很复杂,直接切入终端问题很多。未来十年,AI+...

jackli2020
44分钟前
11
0
源于HystrixCommandStartStream和RollingCommandMaxConcurrencyStream 的 RxJava demo

其实,最近在工作之余看Hystrix源代码已经有一个多月了, 除了对 HystrixCommandProperties ,HystrixCommand 和AbstractCommand 几个类比较了解以外,其余看山不是山,比较懵, 主要是因为H...

专业写BUG的程序员
47分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部