Aufzählungswert basierend auf dem Beschreibungsattribut abrufen
In einigen Programmierszenarien ist es erforderlich, den Aufzählungswert basierend auf dem mit der Aufzählung verknüpften Beschreibungsattribut abzurufen. Dies ist besonders nützlich, wenn Sie mit Aufzählungen arbeiten, die beschreibende Beschriftungen haben.
kann mit der Enum.GetValueFromDescription()
-Methode erreicht werden. Diese Methode existiert jedoch nicht im .NET Framework. Wir können eine benutzerdefinierte Erweiterungsmethode implementieren, um diesen Mangel auszugleichen. Der folgende Codeausschnitt demonstriert eine solche Implementierung:
<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>
Anwendung:
<code class="language-csharp">var panda = EnumEx.GetValueFromDescription<animal>("大熊猫");</code>
Durch Aufrufen der Methode GetValueFromDescription
können Sie den Enumerationswert abrufen, der der angegebenen Beschreibungseigenschaft entspricht. Diese Methode durchläuft die Felder der Aufzählung, prüft die DescriptionAttribute
-Attribute und gibt bei einer Übereinstimmung den entsprechenden Wert zurück. Wenn keine passende Beschreibung gefunden wird, wird je nach Implementierung eine Ausnahme ausgelöst oder der Standardwert des Enum-Typs zurückgegeben.
Das obige ist der detaillierte Inhalt vonWie rufe ich Aufzählungswerte aus Beschreibungsattributen in C# ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!