Плагины MEF с безопасностью и эффективностью профилей - PullRequest
1 голос
/ 15 февраля 2011

У меня есть приложение, которое имеет много модулей / плагинов. Я использую MEF с плагином Directory для их импорта. У каждого пользователя есть список доступных модулей, хранящихся в базе данных, и у каждого пользователя может быть несколько профилей, управляющих тем, какие модули видны.

В области обзора отображается информация обо всех видимых модулях с атрибутом [ImportMany (typeof (IModule)]).

Какой хороший способ справиться с этим, чтобы невидимые или недоступные модули не создавались в памяти.

Ответы [ 2 ]

2 голосов
/ 15 февраля 2011

Ленивая загрузка их гарантирует, что они не будут инициализированы или загружены в память.Затем используйте метаданные , чтобы найти имена и подробности модуля.

0 голосов
/ 15 февраля 2011

Использование [ImportMany(typeof(IModule)] создаст экземпляр каждого модуля - так работает MEF. Таким образом, один из подходов состоит в том, чтобы конструкторы ваших модулей ничего не делали, а затем вызывали метод Load на каждом модуле, который вы на самом деле хотите использовать, в котором он может выполнять любую работу, которая ему необходима.

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

...