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
Patricia ArquetteOriginal
2025-01-21 21:28:10573Durchsuche

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:

<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!

Stellungnahme:
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