C# Aufzählter String zeigt
an
In C#verwendet die Aufzählung normalerweise einen Wert, um verschiedene Optionen darzustellen. In einigen Fällen sind Sie jedoch eher geneigt, mit diesen Optionen eine aussagekräftige Zeichenfolge zu verbinden.
Eine Methode besteht darin, benutzerdefinierte Attribute und String -Suchmethoden zu verwenden:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [StringValue( "FORMS" )]
public enum AuthenticationMethod
{
FORMS = 1,
WINDOWSAUTHENTICATION = 2,
SINGLESIGNON = 3
}
public static class StringEnum
{
public static string GetStringValue(Enum value)
{
}
}
|
Nach dem Login kopieren
Diese Methode erfordert manuelle Anwendungsattribute und wird als relativ lang angesehen.
Eine andere Methode besteht darin, den Typ des sicheren Hubmodus zu berücksichtigen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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;
}
}
|
Nach dem Login kopieren
Dieses Modell beinhaltet die Erstellung eines Siegels, das dem Aufzug ähnelt, wobei das statische Lesebereich jede Option darstellt. Jedes Feld hat eine String -Repräsentationsform und einen Wert.
Für die Konvertierung des expliziten Typs können Sie den vom Mapping Dictionary und der Benutzerdefinition definierten Typentypkonvertierungsoperator hinzufügen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private static readonly Dictionary<string, AuthenticationMethod> instance = new Dictionary<string, AuthenticationMethod>();
public AuthenticationMethod(int value, string name)
{
instance[name] = this;
}
public static explicit operator AuthenticationMethod(string str)
{
if (instance.TryGetValue(str, out AuthenticationMethod result))
return result;
else
throw new InvalidCastException();
}
|
Nach dem Login kopieren
Diese Methode kombiniert die Vorteile der beiden Methoden: die Art der sicheren und bequemen String -Darstellung und die Typumwandlung der Benutzerdefinition.
Das obige ist der detaillierte Inhalt vonWie kann ich Strings in C# Enums effizient darstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!