In jedem Fall muss der Enumerationswert basierend auf den zugehörigen Beschreibungseigenschaften der Enumeration abgerufen werden. Lassen Sie uns einen allgemeinen Ansatz erkunden, um dies zu erreichen.
Betrachten Sie das folgende Beispiel, in dem wir eine Erweiterungsmethode haben, um die Beschreibungseigenschaft einer Aufzählung abzurufen:
<code>public static string GetDescription(this Enum value) { // 获取Description属性的实现 }</code>
Mit dieser Methode können wir die Beschreibung erhalten, indem wir den folgenden Code aufrufen:
<code>string myAnimal = Animal.GiantPanda.GetDescription(); // "Giant Panda"</code>
Lassen Sie uns nun in den umgekehrten Prozess der Rückkonvertierung eines Beschreibungsattributs in seinen entsprechenden Aufzählungswert eintauchen. Zu diesem Zweck führen wir eine Hilfsmethode ein:
<code>public static T GetValueFromDescription<T>(string description) where T : Enum { // 根据描述检索枚举值的实现 }</code>
Bei dieser Methode iterieren wir über die Felder des Aufzählungstyps und verwenden Reflektion, um ihre Beschreibungsattribute abzurufen:
<code>foreach (var field in typeof(T).GetFields()) { // 检查DescriptionAttribute并与提供的描述匹配的逻辑 }</code>
Wir können den Feldnamen als Fallback-Mechanismus verwenden, wenn kein passendes DescriptionAttribute gefunden wird. Schließlich wandeln wir das Ergebnis in den gewünschten Enum-Typ um:
<code>return (T)field.GetValue(null);</code>
Um diese Methode zu verwenden, geben Sie einfach den Aufzählungstyp und die Beschreibungseigenschaften an:
<code>var panda = EnumEx.GetValueFromDescription<Animal>("Giant Panda");</code>
Das obige ist der detaillierte Inhalt vonWie konvertiere ich eine Enum-Beschreibung zurück in ihren Enum-Wert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!