Недавно у меня было несколько вопросов о MEF, но вот главный - действительно ли это все или ничего, как кажется?
Моя основная структура приложения - это просто приложение, несколько разделяемых библиотек, которые предназначены для работы в одиночном режиме, и несколько разных плагинов (которые могут реализовывать разные интерфейсы). Приложение загружает плагины, и как приложение, так и все плагины должны иметь доступ к общим библиотекам.
Моя первая попытка в MEF была довольно успешной, хотя я допустил несколько глупых ошибок на этом пути, потому что я пробовал так много разных вещей, что временами я просто сбивался с толку. Но, в конце концов, вчера вечером я запустил свое небольшое тестовое приложение с MEF, несколькими общими библиотеками и одним плагином.
Теперь я перехожу к целевому приложению, которое уже описал. И это часть нескольких плагинов, которая немного беспокоила.
Мое существующее приложение уже поддерживает несколько плагинов с разными интерфейсами с помощью Reflection. Мне нужно иметь возможность однозначно идентифицировать каждый плагин, чтобы пользователь мог выбрать один и получить ожидаемое поведение, предоставляемое этим плагином. Проблема в том, что я пока не знаю, как это сделать ... но это тема другого вопроса.
В идеале я мог бы взять свой существующий загрузчик плагинов и использовать его как есть, полагаясь на MEF для разрешения разделяемой библиотеки. Проблема в том, что я не могу заставить MEF загружать их (т.е. я получаю исключение CompositionException при вызове ComposeParts ()), если я также не использую MEF для загрузки плагина. И если я сделаю это, ну ... тогда мне нужно знать, как отслеживать их по мере их загрузки, чтобы пользователь мог выбрать один из списка плагинов.
Какой у вас был опыт попыток сочетать и сочетать эти подходы?