Autofac: регистрировать инъекции в конфигурационных файлах и использовать сборку без ссылок в проекте
Я использую Autofac для настройки инъекций.
Мое намерение состоит в том, чтобы сделать модули подключаемыми.
Это означает использование файла конфигурации (xml, json) вместо использования кода (о котором я уже задумывался).
Однако существует ли возможность для Autofac искать сборку, не ссылаясь на нее в основном (веб) файле проекта? Например, я хотел бы добавить новый модуль в развернутый пакет, не изменяя другие файлы dll, а только копируя файлы dll нового модуля (в той же папке, что и файл dll веб-проекта) и изменяя файл конфигурации.
1 ответ
Да, вы можете просто сканировать сборки, для которых вы хотите найти типы или модули (модули лучше, так как вы определяете, какие типы регистрировать в самой сборке):
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, как описано в документации. Вы можете найти документацию по использованию Autofac 4 с новым обменом данными на основе JSON ASP.NET 5, если вам это нужно.