Maison >développement back-end >C++ >Comment puis-je obtenir la représentation des cordes d'une enum en C # plus élégamment?

Comment puis-je obtenir la représentation des cordes d'une enum en C # plus élégamment?

Susan Sarandon
Susan Sarandonoriginal
2025-01-29 07:57:09275parcourir

How Can I Get the String Representation of an Enum in C# More Elegantly?

Obtenez la chaîne de C # élégamment élégamment

Considérons l'énumération suivante:

Pour obtenir des valeurs de chaîne (telles que "formulaires" au lieu de l'ID 1), une solution est requise. Bien que les méthodes basées sur l'attribut existantes et les méthodes de dictionnaire fournissent une solution de transformation, il existe des solutions plus élégantes.
<code class="language-csharp">public enum AuthenticationMethod
{
    FORMS = 1,
    WINDOWSAUTHENTICATION = 2,
    SINGLESIGNON = 3
}</code>

Type Mode d'énumération sûre

Le mode de dénombrement sûr de type introduit une classe d'étanchéité, et chaque membre d'énumération est exprimé comme un exemple distinct:

Ce modèle présente les avantages suivants:

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

Type Sécurité:

    Classe Assurez-vous que seules des valeurs efficaces sont utilisées.
  • Clear and Concise: La chaîne indique directement à chaque membre. AuthenticationMethod
  • Évolutivité:
  • Peut ajouter de la valeur ajoutée sans détruire le code existant.
  • Conversion de type différent
  • Si nécessaire, vous pouvez ajouter une conversion de type explicite à la classe
  • , permettre à String de convertir une chaîne en énumération (il y a des problèmes dans cette partie de l'exemple de code, vous devez le corriger):

Cela permet une conversion facile, par exemple:

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn