获取枚举值的属性
我想知道是否有可能获取enum
值的属性而不是其enum
本身?例如,假设我有以下内容enum
:
using System.ComponentModel; // for DescriptionAttributeenum 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