Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12838876
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类: C#/.net

2015-09-14 11:25:24

在C#中,有时候我们需要读取枚举值的描述属性,也就是说这个枚举值代表了什么意思。比如本文中枚举值 Chinese ,我们希望知道它代表意思的说明(即“中文”)。

 

有下面的枚举:


  1. public enum EnumLanugage
  2.         {
  3.             [System.ComponentModel.Description("中文")]
  4.             Chinese,
  5.             English
  6.         }


我们要获取的就是 Chinese 中的说明文字“中文”。

  1. public static string GetEnumDescription(Enum enumValue)
  2.         {
  3.             string str = enumValue.ToString();
  4.             System.Reflection.FieldInfo field = enumValue.GetType().GetField(str);
  5.             object[] objs = field.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
  6.             if (objs == null || objs.Length == 0) return str;
  7.             System.ComponentModel.DescriptionAttribute da = (System.ComponentModel.DescriptionAttribute)objs[0];
  8.             return da.Description;
  9.         }


调用 GetEnumDescription(EnumLanguage.Chinese) 后 将返回“中文”,如果换成 EnumLanguage.English ,由于在 English 上没有定义 Description ,将直接返回枚举名称 English 。

转自博客:
http://www.cnblogs.com/xiaofengfeng/p/4125003.html

阅读(2255) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~