博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
扩展方法:获取枚举的描述信息
阅读量:5114 次
发布时间:2019-06-13

本文共 1042 字,大约阅读时间需要 3 分钟。

定义这样一个枚举:

//颜色枚举    internal enum Color    {        [Description("红色")]        Red=0,        [Description("绿色")]        Green=1,        [Description("蓝色")]        Blue=2    }

 

 获取枚举描述信息的扩展方法:

private static string GetDescription(this Enum value)        {            //得到枚举类型:返回 命名空间+枚举名            var type = value.GetType();            //得到字段:传入这个枚举类型和一个value,得到 枚举名.值             var field = type.GetField(Enum.GetName(type, value));            if (field == null) return "";            //得到这个枚举值所拥有的的标签中,类型为Description的标签            var desc = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;            //返回这个标签的Description属性值            return desc != null ? desc.Description : "";        }

 

调用:

private static void Main(string[] args)        {            Color c = Color.Red;            Console.WriteLine(c.GetDescription());            Console.ReadKey();        }

 

使用场景:通过这种思路可以获取到任意类型的特性标签的值,上面这个扩展方法可以用于获取描述信息,生成下拉列表、单选、复选等应用场景,而不用在多个地方编写重复的文字描述。

转载于:https://www.cnblogs.com/rennix/p/6402274.html

你可能感兴趣的文章
mysql 表中中文不显示
查看>>
基于Go语言构建区块链:part5
查看>>
【mongoDB实战】mongoDB数据导入和导出
查看>>
[转]windows和linux进行socket通信
查看>>
Python之旅Day6 模块应用
查看>>
正则【转】
查看>>
CentOS node,npm,cnpm 环境部署
查看>>
短文本情感分析
查看>>
Codeforces Round #401 (Div. 2) E. Hanoi Factory 栈
查看>>
网络虚拟化
查看>>
python_面向对象
查看>>
[ An Ac a Day ^_^ ] CodeForces 680A Bear and Five Cards
查看>>
头条笔试
查看>>
python
查看>>
angularJS中搜索框的用法
查看>>
等级显示和直辖市的处理
查看>>
NOIP2016 DAY2 T3 愤怒的小鸟
查看>>
Redis遍历所有key的两个命令 -- KEYS 和 SCAN
查看>>
[BZOJ3110] [Zjoi2013]K大数查询
查看>>
Django的virtualenv环境搭建
查看>>