Le schéma précédent utilise des attributs personnalisés pour récupérer la représentation de la chaîne d'énumération. Bien que la fonction soit valide, elle peut sembler longue. Ce qui suit est une méthode alternative pour utiliser le mode d'énumération sécurisé de type:
Ce modèle définit l'instance explicite de l'énumération, qui contient une représentation de chaîne et de valeur.
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; } }
ToString()
<式> Conversion de type différent
Afin d'activer la conversion de type explicite, vous pouvez ajouter un membre statique pour la cartographie à la classe:
Remplissez le dictionnaire dans le constructeur de la classe:
private static readonly Dictionary<string, AuthenticationMethod> instance = new Dictionary<string, AuthenticationMethod>();
Enfin, ajoutez un opérateur de conversion de type défini par l'utilisateur:
instance[name] = this;
Cela vous permet de convertir explicitement la chaîne en instance
pour rendre le processus de conversion de type plus direct.public static explicit operator AuthenticationMethod(string str) { AuthenticationMethod result; if (instance.TryGetValue(str, out result)) return result; else throw new InvalidCastException(); }
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!