Как использовать внешние плагины через файл конфигурации (конфигурация времени выполнения) с Autofac 5C#

Место общения программистов C#
Anonymous
Как использовать внешние плагины через файл конфигурации (конфигурация времени выполнения) с Autofac 5

Сообщение Anonymous »

Я пытаюсь настроить простой проект .NET Core 3.1, использующий контейнер Autofac 5 IoC.
Я добавил ссылку на последний пакет 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();
------------------------
Но я получаю сообщение «System.InvalidOperationException»:

Тип «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) без перекомпиляции.

Вернуться в «C#»