Si je veux convertir entre deux types ? p> p> Enum code>, les valeurs dont j'espère avoir les mêmes noms, y a-t-il une voie nette, ou dois-je le faire comme ceci: < Pré> xxx pré>
3 Réponses :
Si vous avez un contrôle strict sur les deux Enum, alors votre solution (ou Randolpho's ) est bien. P>
Si vous ne le faites pas, alors je sauterais d'essayer d'être délicat et de créer une classe de cartographie statique qui convertit entre eux. En fait, je recommanderais probablement que de toute façon (même si vous mappez-vous par nom pour le moment), d'une perspective de facilité de maintenance. P>
Je serais à convenir - tout en étant possible de lancer d'une autre fonction de mappage serait plus transparent et moins sujette à l'erreur.
Vous pouvez également faire cela, ne sais pas si c'est suffisamment propre:
static B ToB(this A a) { switch (a) { case A.One: return B.One; case A.Two: return B.Two; default: throw new NotSupportedException(); } }
Utilisez ceci (encapsulate variables vers une nouvelle classe au besoin):