J'ai un grand projet qui a été écrit à l'origine en C#1.1 et qui vise maintenant C#2.0. Il y a plusieurs classes qui ont des méthodes qui prennent un paramètre ArrayList. J'aimerais commencer à les déplacer pour qu'elles acceptent les paramètres suivants List<T>
comme paramètre, mais cela ne peut pas être fait en une seule fois, je dois donc accepter les deux paramètres.
La raison principale de cette migration est que List<>
Les objets seront acceptés en tant que paramètres, mais j'aimerais également profiter de la sécurité des types.
Ont envisagé
1) Créer des surcharges et dupliquer le code. Cela a l'avantage de me permettre de marquer l'ancien style de code comme obsolète, mais il est évident que la duplication du code est mauvaise.
2) Changer le paramètre en IEnumerable : Ceci a l'avantage de fonctionner avec l'ancien et le nouveau code, mais n'est pas sûr du point de vue du type car il acceptera List<T1>
où il devrait être List<T2>
3) Réécrire les méthodes pour prendre un List<T>
et l'écriture d'un wrapper fin qui prend un paramètre ArrayList et copie les éléments dans un nouveau fichier de type List<T>
et appelle ensuite la méthode principale. Cela a également l'avantage de me permettre de marquer l'ancien style de code comme obsolète. Il y aura un léger impact sur les performances et les coûts.
4) Créer trois surcharges. Une méthode privée qui prend IEnumerable et deux méthodes wrapper publiques (une pour ArrayList et une pour List<T>
) qui se contentent d'appeler la méthode privée. Cela a également l'avantage de me permettre de marquer l'ancien style de code comme obsolète. Je ne suis pas sûr qu'il y ait d'autres inconvénients que celui d'avoir trois méthodes.
Je penche pour 4, mais est-ce que je néglige quelque chose ?