13 votes

MEF : Que faire si j'ai plusieurs exportations mais que je n'ai besoin que d'une seule importation ?

J'essaie de me faire une idée de la MEF. Il y a une chose que je ne comprends pas.

Supposons que j'ai une interface, nommée ISquelque chose, qui est un contrat, et que j'ai plusieurs assemblages dans un dossier qui contient mon application, et que je n'ai aucune idée du nombre d'implémentations de ISquelque chose qu'ils contiennent, ou de celui qui en contient une.

Si je crée une application hôte dans laquelle j'utilise le MEF, et que je souhaite obtenir un ISomething, mais un seul, comment le MEF décide-t-il de l'implémentation qu'il va me donner ?

Ou, à l'instar d'un conteneur IoC commun, comment lui indiquer quelle mise en œuvre il doit utiliser ?

Merci d'avance pour vos réponses.

14voto

Daniel Plaisted Points 11183

Voir cet article de blog pour une discussion sur cette question et sur certaines des options dont vous disposez. Par ailleurs, Glenn Block a publié un article de blog décrivant comment personnaliser le comportement du conteneur avec des valeurs par défaut .

11voto

Reed Copsey Points 315315

Dans le cas du MEF, si vous avez de nombreuses exportations qui vont satisfaire une importation, vous avez deux options :

  1. Changez votre importation pour utiliser [ImportMany] . Décidez, au moment de l'exécution, quel import utiliser pour votre contrat, en choisissant éventuellement le premier, ou un au hasard.
  2. Utilice [ImportMany] en collaboration avec Métadonnées afin de décider de l'importation à utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X