2010-04-27 4 views
3

Considérons que j'ai une énumération, que j'ai codée aujourd'hui. Quels sont les moyens possibles d'étendre ses fonctionnalités, ou peut-être ajouter plus de variables, à une date ultérieure? Est-ce que les enums partiels vont faire l'affaire?Extension de la fonctionnalité dans une énumération

Répondre

5

Cela dépend vraiment de qui utilise l'énumération. Si c'est juste votre propre code, alors vous pouvez probablement ajouter plus de valeurs à cela sans aucun effet secondaire, puisque vous devriez déjà déjà vérifier explicitement les valeurs attendues. Il est généralement assez facile de retrouver tous les endroits qui ont besoin d'être édités.

Il devient plus difficile si l'énumération a été libérée pour que d'autres personnes consomment dans le cadre d'une API; Par exemple, si vous ajoutez "MyNewValue" à une énumération utilisée dans le retour d'une méthode Web, les clients existants (qui n'ont pas encore été mis à jour) risquent de se bloquer lorsque vous leur envoyez cette valeur - soit via le code sachant quoi faire, ou (plus immédiatement) par la couche de sérialisation qui panique quand elle voit une chaîne à laquelle elle ne s'attendait pas.

Il n'existe pas de partial enum; seulement class, struct ou interface.

+0

alors comment ça se fait, si elle a été publiée en tant qu'API? – Soham

+1

@Soham - avec grand soin. Bien sûr, vous pouvez reconstruire et redéployer la DLL, mais cela peut avoir des conséquences. –

+1

@Soham: Si vous écrivez une bibliothèque réutilisable, veuillez lire les directives de conception de cadre (http://www.amazon.com/dp/0321545613). Le livre a 13 pages de conception d'énumérations (paragraphe 4.8). Marc a parfaitement raison quant au risque de compatibilité d'ajouter des valeurs à des enums. Le FDG dit à ce sujet: _ "CONSIDER ajouter des valeurs à enums, malgré un petit risque de compatibilité." _ – Steven

Questions connexes