J'ai une énumération qui énumère les valeurs entières renvoyées par une API externe pour une utilisation plus facile dans mon code. Mais je ne connais pas nécessairement les valeurs entières au moment de la compilation, donc j'ai du code qui les relie au démarrage du programme et les stocke dans un dictionnaire.C# empêche la conversion en int
J'ai défini des méthodes d'extension pour la conversion vers/depuis les codes entiers, mais ces codes entiers ne sont pas les mêmes que ceux qui seraient renvoyés d'un cast vers int. Si un autre programmeur devait programmer avec mon énumération, j'ai peur qu'ils essaieraient d'aller et de sortir des entiers hors de l'habitude. Et le programme accepterait simplement le mauvais code.
Existe-t-il un moyen d'empêcher la conversion explicite de mon énumération en/de int? Sinon, existe-t-il un moyen de provoquer une exception si quelqu'un tente? Ou connecter mes propres fonctions de conversion? Ou changer la valeur sous-jacente d'une énumération au moment de l'exécution?
Utiliser des chaînes à la place? –
Ou faites en sorte que les codes entiers DO correspondent. Pourquoi n'est-ce pas une possibilité? – Aaronaught
Les chaînes n'ont pas pu être vérifiées lors de la compilation ... J'ai une poignée de codes entiers que je connais, donc oui, je pourrais coder mes énumérations à ces valeurs. Mais il est possible que l'API change leurs valeurs dans le futur, etc. Je pourrais juste le coder en dur et traiter les problèmes comme ils se produisent, mais c'est un problème de programmation intéressant que j'espère avoir une réponse intéressante. –