根据描述属性检索枚举值
在某些编程场景中,需要根据枚举关联的描述属性来检索枚举值。这在处理具有描述性标签的枚举时尤其有用。
可以使用 Enum.GetValueFromDescription()
方法来实现。但是,此方法并不存在于 .NET 框架中。我们可以实现一个自定义扩展方法来弥补这个不足。以下代码片段演示了这样的实现:
<code class="language-csharp">public static class EnumEx { public static T GetValueFromDescription<T>(string description) where T : Enum { foreach (var field in typeof(T).GetFields()) { if (Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) is DescriptionAttribute attribute) { if (attribute.Description == description) return (T)field.GetValue(null); } else { if (field.Name == description) return (T)field.GetValue(null); } } throw new ArgumentException("未找到。", nameof(description)); // 或者返回 default(T); } }</code>
使用方法:
<code class="language-csharp">var panda = EnumEx.GetValueFromDescription<animal>("大熊猫");</code>
通过调用 GetValueFromDescription
方法,您可以检索与指定的描述属性对应的枚举值。此方法迭代枚举的字段,检查 DescriptionAttribute
属性,并在匹配时返回相应的值。如果找不到匹配的描述,则根据实现情况抛出异常或返回枚举类型的默认值。
以上是如何从 C# 中的描述属性中检索枚举值?的详细内容。更多信息请关注PHP中文网其他相关文章!