Windsor имеет некоторую поддержку плагинов, но это не является основной целью фреймворка.В частности, Windsor не предоставляет никакого готового механизма для обнаружения того, что новый .dll был добавлен в каталог.Он также не обеспечивает какой-либо формы изоляции OOTB от плагинов (в форме размещения их в отдельном AppDomain или другом).Он также не обеспечивает возможность выгрузки плагинов / компонентов (есть метод container.RemoveComponent()
, но он на самом деле не работает и будет удален в следующей версии Windsor 3).
Возможно, сочетание MAF и MEF будет лучше соответствовать вашим требованиям.если вам нужно делать эти вещи во время выполнения.
Если вы ослабите свои требования безопасности (без изоляции) и требования к изменению времени выполнения (чтобы быть один раз, во время запуска ) Windsor можетподдержите этот сценарий.
Лучший способ сделать это - это иметь несколько инсталляторов (IWindsorInstaller
) в сборке вашего плагина и использовать методы
container.Install(FromAssembly.InDirectory(...));
для обнаружения этих сборок и запуска регистрации инсталляторов.ваши компоненты плагина.