在各種情況下,都需要根據枚舉的關聯描述屬性來檢索枚舉值。讓我們探索一種通用的方法來實現這一點。
考慮以下範例,其中我們有一個擴充方法來取得枚舉的描述屬性:
<code>public static string GetDescription(this Enum value) { // 获取Description属性的实现 }</code>
使用此方法,我們可以透過呼叫以下程式碼來取得描述:
<code>string myAnimal = Animal.GiantPanda.GetDescription(); // "Giant Panda"</code>
現在,我們深入探討將描述屬性轉換回其對應的枚舉值的逆向過程。為此,我們引入一個輔助方法:
<code>public static T GetValueFromDescription<T>(string description) where T : Enum { // 根据描述检索枚举值的实现 }</code>
在這個方法中,我們遍歷枚舉類型的字段,利用反射來檢索它們的DescriptionAttributes:
<code>foreach (var field in typeof(T).GetFields()) { // 检查DescriptionAttribute并与提供的描述匹配的逻辑 }</code>
如果沒有找到符合的DescriptionAttribute,我們可以使用欄位名稱作為後備機制。最後,我們將結果強制轉換為所需的枚舉類型:
<code>return (T)field.GetValue(null);</code>
要使用此方法,只需指定枚舉類型和描述屬性:
<code>var panda = EnumEx.GetValueFromDescription<Animal>("Giant Panda");</code>
以上是如何將枚舉描述轉換回其枚舉值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!