Quelques extensions utiles lors de la gestion des types dans .NET


Si vous écrivez du code réutilisable, il y a de fortes chances que vous écriviez pas mal de code traitant des types, des génériques et des interfaces. Au fil des ans, la collection de mes extensions d’aide pour cela s’est développée. Comme certains de mes prochains messages les utilisent, je les partage (également) pour référence future.

1. Vérifiez si un type dérive d’un autre type

La dérivation de types est une pratique courante. Dans une certaine mesure, vous pouvez utiliser la correspondance de modèles. Parfois, cela ne suffit pas (surtout si vous avez un chemin de dérivation à plusieurs niveaux). C’est à ce moment que j’utilise l’une de ces deux extensions:

Mise à jour 1: Type.IsSubclassOf vous donnera le même résultat que IsDerivingFrom. Le but principal était (est) d’utiliser mon implémentation en ayant plusieurs niveaux de dérivation et en étant capable de déboguer l’ensemble du processus de détection.

2. Obtenir le type de T à partir de IEnumerable

Parfois, il faut connaître le type d’élément d’un IEnumerable. Ces deux extensions vous aideront dans ce cas:

3. Vérifiez si un type implémente une certaine interface

Les interfaces sont censées faciliter la vie d’un développeur. Comme avec la dérivation de type, nous avons parfois besoin de savoir si un type implémente une certaine interface. Cette extension répond à la question pour vous:

Mise à jour 2: Type.IsAssignableFrom vous dira également si un type implémente une interface. Quant à la méthode IsDerivingFrom, je souhaitais pouvoir déboguer la détection, ce qui est – en plus d’avoir une implémentation explicite – la principale raison de cette méthode.

4. Recherchez un type dans un A externeassemblage

Si vous avez besoin d’un type qui vit dans un assemblage externe mais que vous ne l’avez que Name (ou FullName, c’est facile à adapter), celui-ci résoudra le Type pour vous tant que son assemblage est chargé dans votre AppDomain:

Conclusion

Comme je l’ai dit au début, cet article sera utilisé pour référence future. Ces extensions ont rendu beaucoup de contrôles, d’implémentations MVVM et de logique métier que j’ai écrits dans le passé (à la fois pour le travail et mes projets privés) beaucoup plus faciles. Comme toujours, j’espère que cet article sera utile pour certains d’entre vous.

Veuillez trouver la classe complète dans ce Essentiel.

Bon codage!

Close Menu