透過描述屬性反向找出枚舉值
除了從枚舉中取得 Description 屬性外,還可以執行反向操作,根據其 Description 屬性檢索枚舉值。
為此,建立一個名為 GetValueFromDescription 的泛型擴充方法,如下所示:
<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<动物>("大熊猫");</code>
以上是如何使用枚舉值的描述屬性反向查找它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!