Heim >Backend-Entwicklung >C++ >Wie können wir die String-Darstellung von Aufzählungen mithilfe von Typ-sicheren Aufzügen und expliziten Typumwandlungen verbessern?

Wie können wir die String-Darstellung von Aufzählungen mithilfe von Typ-sicheren Aufzügen und expliziten Typumwandlungen verbessern?

DDD
DDDOriginal
2025-01-29 07:46:08939Durchsuche

How Can We Improve String Representation of Enumerations Using Type-Safe Enums and Explicit Type Conversion?

Eine Alternative der Aufzählungszeichenfolge

Das vorherige Schema verwendet benutzerdefinierte Attribute, um die Darstellung der Aufzählungszeichenfolge abzurufen. Obwohl die Funktion gültig ist, kann sie langwierig aussehen. Im Folgenden ist eine alternative Methode zur Verwendung des Typs Secure Enumeration -Modus:

Dieses Modell definiert die explizite Instanz der Aufzählung, die Zeichenfolge und Wertdarstellung enthält.
<code class="language-csharp">public sealed class AuthenticationMethod
{
    private readonly string name;
    private readonly int value;

    public static readonly AuthenticationMethod FORMS = new AuthenticationMethod(1, "FORMS");
    public static readonly AuthenticationMethod WINDOWSAUTHENTICATION = new AuthenticationMethod(2, "WINDOWS");
    public static readonly AuthenticationMethod SINGLESIGNON = new AuthenticationMethod(3, "SSN");        

    private AuthenticationMethod(int value, string name)
    {
        this.name = name;
        this.value = value;
    }

    public override string ToString()
    {
        return name;
    }
}</code>
Methode geben das Formular zur String -Darstellung zurück.

ToString() Unterschiedliche Konvertierung

Um den expliziten Typumwandlungen zu aktivieren, können Sie ein statisches Mitglied zur Zuordnung der Klasse hinzufügen:

füllen Sie das Wörterbuch im Konstruktor der Klasse aus:

<code class="language-csharp">private static readonly Dictionary<string, AuthenticationMethod> instance = new Dictionary<string, AuthenticationMethod>();</code>

Fügen Sie schließlich einen von Benutzer definierten Typ Conversion Operator hinzu:

<code class="language-csharp">instance[name] = this;</code>

Auf diese Weise können Sie die Zeichenfolge explizit in die

-Stanz konvertieren, um den Typ -Konvertierungsprozess direkter zu gestalten.
<code class="language-csharp">public static explicit operator AuthenticationMethod(string str)
{
    AuthenticationMethod result;
    if (instance.TryGetValue(str, out result))
        return result;
    else
        throw new InvalidCastException();
}</code>

Das obige ist der detaillierte Inhalt vonWie können wir die String-Darstellung von Aufzählungen mithilfe von Typ-sicheren Aufzügen und expliziten Typumwandlungen verbessern?. 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