在C#中如何读取枚举值的描述属性

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

有下面的枚举:


1

2

3

4

5

6

public enum EnumLanugage

{

    [System.ComponentModel.Description("中文")]

    Chinese,

    English

}

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


1

2

3

4

5

6

7

8

9

public string GetEnumDescription(Enum enumValue)

{

    string str = enumValue.ToString();

    System.Reflection.FieldInfo field = enumValue.GetType().GetField(str);

    object[] objs = field.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);

    if (objs == null || objs.Length == 0) return str;

    System.ComponentModel.DescriptionAttribute da = (System.ComponentModel.DescriptionAttribute)objs[0];

    return da.Description;

}

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

时间: 2024-10-13 00:06:25

在C#中如何读取枚举值的描述属性的相关文章

返回枚举值的描述 根据枚举类型返回类型中的所有值、文本及描述

/// <summary> /// 返回枚举值的描述 /// </summary> /// <param name="value">枚举值</param> /// <returns>指定枚举值描述</returns> public static string getEnumDescription(this Enum value) { FieldInfo fi = value.GetType().GetField(v

IOS开发基础篇 --添加的约束中所有的枚举值

/** NSLayoutConstraint类中的枚举值 *  代码添加一条约束      *      * @param Item:view1 :要约束的控件      * @param attribute:attr1 :约束的类型(做怎样的约束)      * @param relatedBy:relation :与参照控件之间的关系      * @param toItem:view2 :参照的控件      * @param attribute:attr2 :约束的类型(做怎样的约束)

利用DescriptionAttribute定义枚举值的描述信息 z

System.ComponentModel命名空间下有个名为DescriptionAttribute的类用于指定属性或事件的说明,我所调用的枚举值描述信息就是DescriptionAttribute类的Description属性值. 首先定义一个枚举 /// <summary>    /// 测试用的枚举    /// </summary>    public enum ArticleTypeList    {        [DescriptionAttribute("

C#枚举扩展方法,获取枚举值的描述值以及获取一个枚举类下面所有的元素

/// <summary> /// 枚举扩展方法 /// </summary> public static class EnumExtension { private static Dictionary<string, Dictionary<string, string>> _enumCache; /// <summary> /// 缓存 /// </summary> private static Dictionary<stri

[小技巧]C#中如何为枚举类型添加描述方法

背景 在我们的日常开发中,我们会经常使用枚举类型.有时我们只需要显示枚举的值或者枚举值对应名称, 但是在某些场景下,我们可能需要将枚举值显示为不同的字符串. 例: 当前我们有如下枚举Level public enum Level { //Bad B = -1, //Normal N = 0, //Good G = 1, //Very Good VG = 2 } 这个枚举有4个可选值B, N, G, VG. 现在我们希望用Bad, Normal, Good, Very Good作为B, N, G,

获取Enum枚举值描述的几法方法

原文:获取Enum枚举值描述的几法方法 1.定义枚举时直接用中文 由于VS对中文支持的很不错,所以很多程序员都采用了此方案. 缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用英文 2.利用自定义属性定义枚举值的描述(博客园-大尾巴狼) 缺点:不适合多语言 原文:http://www.cnblogs.com/hilite/archive/2006/03/28/360793.html 枚举定义: [EnumDescription("订单.订单中的产品.产品项的状态.&quo

C#将一个枚举里面所有描述和value绑定到下拉列表的方法

/// <summary> /// 获取枚举值的描述,如果没有描述,则返回枚举名称 /// </summary> /// <param name="en">枚举值</param> /// <returns>描述</returns> public static string GetEnumDescription(Enum en) {     FieldInfo fi = en.GetType().GetField(e

解决ASP.NET MVC4中使用Html.DropDownListFor显示枚举值默认项问题

从ASP.NET MVC 5开始,Html.DropDownListFor已经提供了对Enum的支持,但在这以前,需要通过帮助方法或扩展方法来让Html.DropDownListFor显示枚举值. 本篇解决在ASP.NET MVC 4 下Html.DropDownListFor显示默认项的问题. 以上,使用Select是通过Html.DropDownListFor来实现的,Select的选项值是从枚举中读出.可以看到,某个枚举值成了默认选项,而我想让"==请选择=="成为Select的

Oracle如何实现从特定组合中随机读取值

在这里,我们会用到DBMS_RANDOM包和CASE WHEN语句,思路如下: 一.利用DBMS_RANDOM.RANDOM函数随机生成数值,然后对数值进行取模,如果我们要在10个元素中随机读取的话,那我们需要对10进行取模. 二.再将取模后的值利用CASE WHEN语句与元素进行关联. 譬如,我有一个组合,里面包含“北京”,“上海”,“广州”,“深圳”,“武汉”五个元素,想从这五个元素中随机读取值来填充表的某个字段. 首先,创建测试表 SQL> create table test(loc va