Heim >Backend-Entwicklung >C++ >Wie kann ich einen Enum-Wert aus seinem Beschreibungsattribut erhalten?
Erhalten Sie den Aufzählungswert basierend auf dem Beschreibungsattribut
Wir haben zuvor eine Erweiterungsmethode eingeführt, mit der das der Aufzählung zugeordnete Beschreibungsattribut abgerufen wird. Lassen Sie uns nun eine Komplementärfunktion untersuchen, die es uns ermöglicht, eine Aufzählung basierend auf ihrer Beschreibung zu erhalten.
Dazu führen wir folgende Erweiterungsmethoden ein:
<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>
Verwendung:
Diese Methode kann wie folgt aufgerufen werden:
<code class="language-csharp">var panda = EnumEx.GetValueFromDescription<animal>("大熊猫");</code>
Durch die Bereitstellung einer „Pandas“-Beschreibung ruft die Erweiterungsmethode den entsprechenden Pandas-Enumerationswert ab.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Enum-Wert aus seinem Beschreibungsattribut erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!