C# cast explicite de la chaîne d'enum
Je voudrais avoir un cast explicite entre une chaîne en un enum en c# pour avoir ceci :
(MyEnum) Enum.Parse(typeof(MyEnum),stringValue)
Je tiens à expulser ce dans un cast explicite de l'opérateur, je l'ai fait mais n'a pas fonctionné :
public static explicit operator (MyEnum)(value stringValue){
return (MyEnum) Enum.Parse(typeof(MyEnum),stringValue);
}
Savez-vous si il est possible en C# à l'aide .NET 3.5?
Vous devez vous connecter pour publier un commentaire.
Un casting n'est pas possible. Le problème est qu'une conversion définie par l'utilisateur doit être placé dans une structure ou de la déclaration de classe, et la conversion doit être vers ou à partir de l'affichage de type. Ainsi,
est impossible parce que ni
MyEnum
nistring
peut jamais être la enfermant type.La section pertinente de la ECMA334 C# spec est 17.9.4:
Un opérateur de conversion convertit un type de source, indiqué par le paramètre de type de la conversion
l'opérateur, à un type de cible, indiqué par le type de retour de l'opérateur de conversion. Une classe ou structure est
permis de déclarer une conversion d'un type de source S à un type de cible T seulement si toutes les conditions suivantes sont remplies,
où S0 et T0 sont les types qui résultent de la suppression de la fuite ? les modificateurs, le cas échéant, à partir de S et T:
S0 et T0 sont de types différents.
Soit S0 ou T0 est la classe ou de type struct dans lequel l'opérateur déclaration a lieu.
Ni S0 ni T0 est une interface de type.
À l'exclusion des conversions définies par l'utilisateur, une conversion n'existe pas de S à T ou T à S.
Cependant, vous pouvez faire une extension de la méthode de la classe string.
Enum.TryParse()
.Est-il nécessaire d'utiliser un opérateur de cast? Une autre option serait d'ajouter une méthode d'extension hors de la chaîne:
Vous pouvez également utiliser "StringValue" attributs pour obtenir ce que vous voulez.
Découvrez cette question: stackoverflow.com/questions/424366/c-string-enums, il ya beaucoup d'informations là-bas qui pourrait les aider.
acclamations