Я добавил ссылку на последний пакет Autofac.Configuration 5.0.0.
Я создал интерфейс, реализацию и тестовое приложение с простой конфигурацией JSON (следуя этому руководству):
Код: Выделить всё
{
"components": [
{
"type": "Implementations.ImplementationN, Implementations",
"services": [
{
"type": "Interfaces.InterfaceN, Interfaces"
}
]
}
]
}
Код: Выделить всё
using Interfaces;
using Autofac;
using Autofac.Configuration;
using Microsoft.Extensions.Configuration;
using System;
------------------------
var config = new ConfigurationBuilder();
config.AddJsonFile("config.json");
var module = new ConfigurationModule(config.Build());
var builder = new ContainerBuilder();
builder.RegisterModule(module);
var container = builder.Build();
------------------------
Тип «Implementations.ImplementationN, Implementations»
не найден. Может потребоваться квалификация сборки,
напр. «MyType, MyAssembly»
Я загрузил свой код на GitHub.
P.S. Visual Studio 2019 16.4.5 Enterprise, Windows 10 1909 x64 Professional
Обновление
Чтобы уточнить больше: моя конечная цель — иметь Interfaces.dll без специальных ссылок, Implementations.dll со ссылкой на ONLY Interfaces.dll и Test.exe со ссылкой на ONLY Interfaces.dll (и пакет Autofac, конечно). Я ожидаю, что Autofac загрузит определенный класс из определенной сборки (указанной в config.json) через Reflection. Это было возможно с Unity Container, и я ожидал добиться того же с Autofac IoC.
Еще раз: мне нужен подход без ЛЮБОГО проекта, ссылающегося на Implementations.dll, я должен иметь возможность изменить конкретную реализацию (путем изменения config.json) без перекомпиляции.