Ответ 1
См. этот пост в блоге для обсуждения этой проблемы и некоторых параметров, которые у вас есть. Кроме того, у Glenn Block есть сообщение в блоге, описывающее, как настроить поведение контейнера с настройками по умолчанию.
Я пытаюсь обойти MEF. Есть одна вещь, которую я не понимаю.
Предположим, что у меня есть интерфейс с именем ISomething, который является контрактом, и у меня есть несколько сборок в папке, содержащей мое приложение, и я не знаю, сколько в ней реализовано реализаций ISomething, или какое из них содержит один.
Если я создаю приложение-хост, в котором я использую MEF, и хотел бы получить ISomething, но только один, как MEF решает, какую реализацию он мне даст?
Или, как и обычный контейнер IoC, как я могу сказать, какую реализацию он должен использовать?
Заранее благодарим за ваши ответы.
См. этот пост в блоге для обсуждения этой проблемы и некоторых параметров, которые у вас есть. Кроме того, у Glenn Block есть сообщение в блоге, описывающее, как настроить поведение контейнера с настройками по умолчанию.
В случае MEF, если у вас есть много Экспорт, которые будут удовлетворять Импортированию, у вас есть два варианта:
[ImportMany]
. Решите во время выполнения, какой из Импортов использовать для вашего контракта, потенциально просто выбрать первый или случайный.[ImportMany]
совместно с Metadata, чтобы решить, какой импорт использовать.