Autofac - Регистрация плагинов по типу - PullRequest
1 голос
/ 31 октября 2010

Я пишу систему плагинов: каждый плагин находится в своей собственной сборке, которая должна быть загружена автофаком и подписана атрибутом с параметром, который устанавливает тип плагина.Я мог бы разрешить в моем приложении asp.net mvc плагины по типу, как я могу это сделать?Каждый плагин инеррирует абстрактный класс и переопределяет предопределенные методы.

Ответы [ 3 ]

2 голосов
/ 05 ноября 2010

RegisterAssemblyTypes(), вероятно, является отправной точкой, которую вы ищете:

Assembly[] assembliesWithPlugins = // find these somehow
var builder = new ContainerBuilder();
builder.RegisterAssemblyTypes(assembliesWithPlugins)
    .AssignableTo<MyAbstractPluginType>()
    .WithMetadata(t => GetPluinTypeFromMyAttribute(t));

Как только вы зарегистрируете свои плагины таким образом, поддержка метаданных Autofac позволит вам использовать их (http://code.google.com/p/autofac/wiki/Metadata). Я предполагаю, что из некоторых ваших последующих вопросов вы уже идете по этому пути.

Удачи вам в этом. Ник

0 голосов
/ 31 октября 2010

Создайте Autofac.Module в каждой сборке плагина. Зарегистрируйте свой плагин там, и из вашего основного приложения загрузите dll плагина, найдите Модули, зарегистрируйтесь в контейнере. Тогда решай и веселись;).

0 голосов
/ 31 октября 2010

Лично я бы использовал MEF для этого и использовал бы MEF интеграции Autofac .

...