C# 从枚举值获取对应的文本描述详解
C# 从枚举值获取对应的文本描述详解
有时枚举值在显示时,需要显示枚举值对应的文本串。一种方案是在调用的地方使用switch或者if来判断枚举值,然后赋给不同的文本串,但这样一来,如果有较多的地方都用到的时候就会比较麻烦。当然有人说,这种情况下,可以针对这种枚举值封装一个方法,然后来调用。那如果有多个枚举类型都有这样的需求呢?有没有什么比较通用的解决办法?有的。
这里需要用到Description属性,给每个枚举值都赋上一个该属性,然后在该属性中赋上要描述的文本串。比如
#region YesNoEnum public enum YesNoEnum { [Description("是")] Yes, [Description("否")] No } #endregion
注:Desscription需要引用using System.ComponentModel;
那要如何获取这个Description属性的值呢?我们可以作用反射,代码如下
public static class EnumUtil { #region FetchDescription /// <summary> /// 获取枚举值的描述文本 /// </summary> /// <param name="value"></param> /// <returns></returns> public static string FetchDescription(this Enum value) { FieldInfo fi = value.GetType().GetField(value.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes( typeof(DescriptionAttribute), false); return (attributes.Length > 0) ? attributes[0].Description : value.ToString(); } #endregion }
注:我们这里写的虽然是静态方法,但是可以适用于所有的Enum类。EnumUtil必须是静态类,而方法也必须是静态方法,同时第一个参数必须是this的,这样才能将方法扩展到Enum类中,以适用到所有的枚举中。
下面是调用代码
YesNoEnum yesNoEnum = YesNoEnum.Yes; string description = yesNoEnum.FetchDescription(); Console.WriteLine(description);
调用的截图如下
从图中可以看到description得到了我们在枚举中指定的Description的文本。同时YesNoEnum的枚举实例增加了扩展方法FetchDescription.
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇:C#不登录电脑启动程序
栏 目:C#教程
下一篇:C# 批量生成随机密码必须包含数字和字母并用加密算法加密
本文标题:C# 从枚举值获取对应的文本描述详解
本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/6001.html
您可能感兴趣的文章
- 01-10C#中查找Dictionary中的重复值的方法
- 01-10C#获取动态生成的CheckBox值
- 01-10C#简单实现子窗体向父窗体传值的方法
- 01-10C#影院售票系统毕业设计(1)
- 01-10使用C#代码获取存储过程返回值
- 01-10C#实现窗体间传值实例分析
- 01-10C#实现两个窗体之间数值传送的方法
- 01-10理解C#中参数的值和引用以及传递结构和类引用的区别
- 01-10C#编程中枚举类型的使用教程
- 01-10详解C#中使用对象或集合的初始值设定项初始化的操作
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-10C#中split用法实例总结
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 04-02jquery与jsp,用jquery
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-11ajax实现页面的局部加载
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-10SublimeText编译C开发环境设置