06fév. 2013

MEF : Filtrer les catalogs

J'étais en train de faire un lifting de mes tests unitaires quand je me suis retrouvé bloqué car je ne voulais pas inclure la couche d'authentification d'origine. Cette "couche d'authentification" est en fait un service exporté dans MEF

J'utilise un AssemblyCatalog qui récupère automatiquement les exports. Je récupère donc une part dont je ne veux pas dans mes tests unitaires.

Il n'est pas possible de supprimer des ComposablePartDefinition d'un catalog une fois que son constructeur a été appelé. Il me faut donc filtrer les parts que je veux rendre accessibles. Pour cela j'ai besoin d'un FilteredCatalog.

Mon application fonctionne avec le Framework .Net 4.0, je n'ai pas accès à l'implementation de FilterCatalog fournie par Microsoft. Comme l'indique la documentation, cette implémentation arrive avec le Framework 4.5.

Après quelques recherches, j'ai trouvé cet article qui propose une implémentation du FilteredCatalog pour le Framework 4.0.

Rien de bien extraordinaire techniquement, mais un grand gain de temps au niveau dev, car pas besoin de migrer ;).