Я нахожусь в процессе расширения решения, основанного на MVC 3.Использование MEF в библиотеке классов с ASP.NET MVC 3
В принципе, решение состоит из проекта MVC 3 наряду с некоторыми библиотеки классов проектов в управлять доступом к бизнесу/данным.
Я пытаюсь использовать MEF, чтобы сделать приложение плагином. например, у меня есть UserManager
класса в проекте длл и я определил свои плагин следующим образом:
[ImportMany]public List<IUserHooks> Plugins {get; set;}
foreach (var plugin in Plugins)
{
Plugin.DoTheJob();
}
Как вы можете видеть, класс отделен от проекта MVC и контроллеров. В списке указан мой класс UserManager
.
Я знаю, что лучший подход должен был бы сделать UserManager
использовать MEF, а также (возможно инициализировать его в CTOR контроллера как public MainController(IUserManager UserManager)
), но так как я просто хочу, чтобы добавить плагин поддержки решения, а не писать с нуля, я предпочитаю самый быстрый ярлык.
Как определить мой объект MEF container
, чтобы иметь возможность использовать его в моей библиотеке классов. Нужно ли создавать приложение MVC с помощью MEF? Я бы предпочел подход, когда минимальная модификация была бы необходима для приложения MVC.
Спасибо за ответ Мэтью. Я попытался протестировать ваше решение и добавил проект TestDll с помощью простого импорта и экспорта. Но свойство с атрибутом «Импорт» всегда равно нулю. Есть ли какой-либо дополнительный шаг, который я должен предпринять, чтобы иметь возможность использовать вашу инфраструктуру в качестве базы, или я должен просто указать ссылки на мои DLL с помощью импорта/экспорта и использовать их? Вы хоть представляете, что я делаю неправильно? Благодарю. – Kamyar