我想知道是否可以获取 enum
值的属性而不是 enum
本身的属性?例如,假设我有以下 enum
:
using System.ComponentModel; // for DescriptionAttribute
enum FunkyAttributesEnum
{
[Description("Name With Spaces1")]
NameWithoutSpaces1,
[Description("Name With Spaces2")]
NameWithoutSpaces2
}
我想要的是给定枚举类型,生成枚举字符串值的二元组及其描述。
值(value)很简单:
Array values = System.Enum.GetValues(typeof(FunkyAttributesEnum));
foreach (int value in values)
Tuple.Value = Enum.GetName(typeof(FunkyAttributesEnum), value);
但是我如何获取描述属性的值,以填充 Tuple.Desc
?如果属性属于 enum
本身,我可以想到如何做到这一点,但我不知道如何从 enum
的值中获取它。
最佳答案
这应该可以满足您的需求。
try
{
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;
}
catch
{
return FunkyAttributesEnum.NameWithoutSpaces1.ToString()
}
关于c# - 获取枚举值的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1799370/