获取枚举值的属性

我想知道是否有可能获取enum值的属性而不是其enum本身?例如,假设我有以下内容enum

using System.ComponentModel; // for DescriptionAttribute

enum FunkyAttributesEnum

{

[Description("Name With Spaces1")]

NameWithoutSpaces1,

[Description("Name With Spaces2")]

NameWithoutSpaces2

}

我想要的是枚举类型,产生2个元组的枚举字符串值及其描述。

价值很容易:

Array values = System.Enum.GetValues(typeof(FunkyAttributesEnum));

foreach (int value in values)

Tuple.Value = Enum.GetName(typeof(FunkyAttributesEnum), value);

但是,如何获取描述属性的值进行填充Tuple.Desc?我可以考虑如果Attribute属于enum自身,那么该怎么做,但是我对如何从的值中获取它感到迷惑enum

回答:

这应该做您需要的。

var enumType = typeof(FunkyAttributesEnum);

var memberInfos = enumType.GetMember(FunkyAttributesEnum.NameWithoutSpaces1.ToString());

var enumValueMemberInfo = memberInfos.FirstOrDefault(m => m.DeclaringType == enumType);

var valueAttributes =

enumValueMemberInfo.GetCustomAttributes(typeof(DescriptionAttribute), false);

var description = ((DescriptionAttribute)valueAttributes[0]).Description;

以上是 获取枚举值的属性 的全部内容, 来源链接: utcz.com/qa/428316.html

回到顶部