【发布时间】:2011-02-08 15:43:36
【问题描述】:
我有一个具有如下描述属性的枚举:
public enum MyEnum
{
Name1 = 1,
[Description("Here is another")]
HereIsAnother = 2,
[Description("Last one")]
LastOne = 3
}
我找到了这段代码,用于根据枚举检索描述
public static string GetEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes = fi.GetCustomAttributes(typeof(DescriptionAttribute), false) as DescriptionAttribute[];
if (attributes != null && attributes.Any())
{
return attributes.First().Description;
}
return value.ToString();
}
这使我可以编写如下代码:
var myEnumDescriptions = from MyEnum n in Enum.GetValues(typeof(MyEnum))
select new { ID = (int)n, Name = Enumerations.GetEnumDescription(n) };
如果我知道枚举值(例如 1),我想要做的是如何检索描述?换句话说,如何将整数转换为“枚举值”以传递给我的 GetDescription 方法?
【问题讨论】:
-
(attributes != null) 将永远为真,否则是多余的。
-
描述所需的命名空间是 System.ComponentModel
-
另一篇文章的相关答案 - Can my enums have friendly names?