博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c# Enum获取name,value和description
阅读量:5256 次
发布时间:2019-06-14

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

 

 

如果我们的枚举类型结构如下,我们需要获取enum的name,value以及description

 

public enum EnumTest    {        [Description("Attribute")]        Attribute1 = 1,        [Description("Attribute")]        Attribute2 = 2,        [Description("Measure")]        Measure1 = 3,        [Description("Measure")]        Measure2 = 4    }

获取的函数代码如下:

public class EnumHelper    {        ///         /// get all information of enum,include value,name and description        ///         /// the type of enumName        /// 
public static List
GetAllItems(Type enumName) { List
list = new List
(); // get enum fileds FieldInfo[] fields = enumName.GetFields(); foreach (FieldInfo field in fields) { if (!field.FieldType.IsEnum) { continue; } // get enum value int value = (int)enumName.InvokeMember(field.Name, BindingFlags.GetField, null, null, null); string text = field.Name; string description = string.Empty; object[] array = field.GetCustomAttributes(typeof(DescriptionAttribute), false); if (array.Length > 0) { description = ((DescriptionAttribute)array[0]).Description; } else { description = ""; //none description,set empty } //add to list dynamic obj = new ExpandoObject(); obj.Value = value; obj.Text = text; obj.Description = description; list.Add(obj); } return list; } ///
/// get enum description by name /// ///
enum type
///
the enum name ///
public static string GetDescriptionByName
(T enumItemName) { FieldInfo fi = enumItemName.GetType().GetField(enumItemName.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes( typeof(DescriptionAttribute), false); if (attributes != null && attributes.Length > 0) { return attributes[0].Description; } else { return enumItemName.ToString(); } } }

 

转载于:https://www.cnblogs.com/sharing1986687846/p/10361682.html

你可能感兴趣的文章
面向对象(封装、继承、多态、抽象)
查看>>
Memcached数据库缓存
查看>>
转获取sql维护的表关系
查看>>
网络基础——TCP/IP五层模型
查看>>
HDU-3018 Ant Trip(欧拉回路)
查看>>
Codeforces Round #215 (Div. 1) B. Sereja ans Anagrams 匹配
查看>>
CDOJ 1251 谕神的密码 贪心
查看>>
CMYK列印颜色
查看>>
matplotlib 进阶之Tight Layout guide
查看>>
多线程 测试
查看>>
web提前做好测试
查看>>
tp5.1 本地正常, 线上route.php不起作用的问题
查看>>
[笔记] 斯特林公式
查看>>
空指针的解决方案Optional包装类
查看>>
opencv删除轮廓
查看>>
简谈【自动化协议逆向工程技术的当前趋势】
查看>>
Leetcode 127
查看>>
Leetcode 1004. 最大连续1的个数 III
查看>>
OpenJudge1001Exponentiation
查看>>
2018.4.2 看k&r
查看>>