在 C# 中显示具有人类可读字符串的枚举
枚举对于表示命名常量很有价值,但直接显示它们的值通常对用户来说缺乏清晰度。本指南演示了如何将枚举值映射到用户友好的字符串,而不需要反向字符串到值的转换。
该解决方案利用了 Description
中的 System.ComponentModel
属性。 通过将此属性应用于枚举成员,您可以为每个值提供更具描述性的标签。
示例:
<code class="language-csharp">private enum PublishStatusValue { [Description("Not Completed")] NotCompleted, Completed, Error }</code>
检索用户友好的字符串:
以下扩展方法检索描述或枚举的默认字符串表示(如果未找到描述):
<code class="language-csharp">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"); } 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) { return ((DescriptionAttribute)attrs[0]).Description; } } return enumerationValue.ToString(); }</code>
该方法有效地提供了用户友好的输出,增强了代码可读性和用户体验。
以上是如何从 C# 中的枚举中获取用户友好的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!