2014-02-18 2 views
3

Я работаю над приложением C#/MVC, которое в настоящее время использует Windsor в качестве рамки DI, и только что начал изучать MEF, чтобы сделать приложение более расширяемым. Это прекрасно работает, вплоть до момента, когда мои плагины должны удовлетворять зависимостям.Как мне установить зависимости MEF [ImportingConstructor], зарегистрированные в Windsor?

Как я могу ввести управляемые зависимостями Windsor в класс, импортируемый MEF, желательно с помощью [ImportingConstructor]?

Я попытался расширить ContainerAdapterBase от MefContrib, но не могу понять, как заставить его работать с [ImportingConstructor]. Кроме того, использование MEF для IoC не является вариантом.

Спасибо!

+1

Вы считаете, что создаете свои плагины с помощью Windsor вместо использования MEF (я не очень хорошо знаком с MEF, но Windsor очень расширяем). – Marwijn

+0

Мне понравилась идея использования MEF, потому что она очень проста и предназначена для работы, и поддерживает несколько вещей, которые Windsor не любит собирать классы в DLL, упавшие во время выполнения. Я бы предпочел использовать Windsor для всего, но чувствовал себя немного похоже на то, что он боится, когда он не подходит. – GoatInTheMachine

ответ

0

Обновление: Мое настоящее решение состоит в том, чтобы написать простую «DSL», управляемую Windsor, которая обеспечивает все функции, необходимые плагинам, а затем вручную вводить это, когда MEF передает мне экземпляр подключаемого модуля. Возможно, это немного неприятно, но это работает, это также означает, что мне не нужно делать какое-либо местоположение службы из плагинов, а также обеспечивает хорошую границу вокруг того, что плагин «разрешен».

Любые мысли об этом подходе были бы весьма признательны.

+0

Я решаю ту же проблему прямо сейчас, используя MEF & Unity. Позаботьтесь о некоторых подсказках о том, как вы решили проблему? –

+0

К сожалению, мы отказались от подхода MEF примерно год спустя, и у меня больше нет доступа к коду, извините ... подход DSL работал хорошо, хотя это было необходимо. – GoatInTheMachine