2016-03-28 2 views
0

Я использую Autofac для установки инъекций.Autofac: зарегистрируйте инъекции в файлах конфигурации и используйте сборку без ссылок в проекте

Мое намерение сделать модули подключаемыми.

Это означает использование файла конфигурации (xml, json) вместо использования кода (о котором я уже знал).

Однако существует ли возможность для Autofac искать сборку без ссылки на нее в основном файле проекта (сети)? Например, я хотел бы добавить новый модуль в развернутый пакет без изменения других файлов DLL, только копируя файлы DLL нового модуля (в той же папке с DLL-файлом веб-проекта) и изменяя файл конфигурации.

ответ

0

Да, вы можете просто сканировать узлы, которые вы хотите, чтобы найти типы или модули (модули лучше, так как вы даете контроль на какие типы зарегистрировать в самой сборки):

var builder = new ContainerBuilder(); 
var path = "path"; 

var assemblyFiles = Directory.GetFiles(path, "Plugin.*.dll"); 
builder.RegisterAssemblyModules(
    assemblyFiles.Select(
     file => Assembly.LoadFile(Path.Combine(path, file))).ToArray()); 

Если вы предпочитаете файлы конфигурации , вы можете использовать app.config/web.config как described in the documentation. Вы можете найти документацию по использованию Autofac 4 с новым интерфейсом на основе ASP.NET 5 JSON, если вам это нужно.