我的枚举包含以下值:
private enum PublishStatusses{ NotCompleted, Completed, Error };
不过,我希望能够以用户友好的方式输出这些值。 我不需要能够再次从字符串变为值。
我使用DescriptionSystem.ComponentModel 命名空间中的属性。简单地装饰枚举:
Description
private enum PublishStatusValue { [Description("Not Completed")] NotCompleted, Completed, Error };
然后使用此代码检索它:
public static string GetDescription<T>(this T enumerationValue) where T : struct { Type type = enumerationValue.GetType(); if (!type.IsEnum) { throw new ArgumentException("EnumerationValue must be of Enum type", "enumerationValue"); } //Tries to find a DescriptionAttribute for a potential friendly name //for the enum MemberInfo[] memberInfo = type.GetMember(enumerationValue.ToString()); if (memberInfo != null && memberInfo.Length > 0) { object[] attrs = memberInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); if (attrs != null && attrs.Length > 0) { //Pull out the description value return ((DescriptionAttribute)attrs[0]).Description; } } //If we have no description attribute, just return the ToString of the enum return enumerationValue.ToString(); }