12
votes

Comment convertir entre Enums où les valeurs partagent les mêmes noms?

Si je veux convertir entre deux types Enum , 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

?


0 commentaires

3 Réponses :


6
votes

Si vous avez un contrôle strict sur les deux Enum, alors votre solution (ou Randolpho's ) est bien.

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.


1 commentaires

Je serais à convenir - tout en étant possible de lancer d'une autre fonction de mappage serait plus transparent et moins sujette à l'erreur.



5
votes

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();
    }
}


0 commentaires

2
votes

Utilisez ceci (encapsulate variables vers une nouvelle classe au besoin): xxx


0 commentaires