我想知道是否有可能获取enum值的属性而不是其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。
Tuple.Desc
这应该做您需要的。
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;