Подтвердить что ты не робот

MEF: Что делать, если у меня есть многократный экспорт, но нужен только один импорт?

Я пытаюсь обойти MEF. Есть одна вещь, которую я не понимаю.

Предположим, что у меня есть интерфейс с именем ISomething, который является контрактом, и у меня есть несколько сборок в папке, содержащей мое приложение, и я не знаю, сколько в ней реализовано реализаций ISomething, или какое из них содержит один.

Если я создаю приложение-хост, в котором я использую MEF, и хотел бы получить ISomething, но только один, как MEF решает, какую реализацию он мне даст?

Или, как и обычный контейнер IoC, как я могу сказать, какую реализацию он должен использовать?

Заранее благодарим за ваши ответы.

4b9b3361

Ответ 2

В случае MEF, если у вас есть много Экспорт, которые будут удовлетворять Импортированию, у вас есть два варианта:

  • Измените свой импорт, чтобы использовать [ImportMany]. Решите во время выполнения, какой из Импортов использовать для вашего контракта, потенциально просто выбрать первый или случайный.
  • Используйте [ImportMany] совместно с Metadata, чтобы решить, какой импорт использовать.