Heim > Backend-Entwicklung > C++ > Wie kann ich einen Enum-Wert aus seinem Beschreibungsattribut erhalten?

Wie kann ich einen Enum-Wert aus seinem Beschreibungsattribut erhalten?

Patricia Arquette
Freigeben: 2025-01-21 21:28:10
Original
589 Leute haben es durchsucht

How Can I Get an Enum Value from its Description Attribute?

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:

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);
    }
}
Nach dem Login kopieren

Verwendung:

Diese Methode kann wie folgt aufgerufen werden:

var panda = EnumEx.GetValueFromDescription<animal>("大熊猫");
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage