如何通过Autofac 5通过配置文件(运行时配置)使用外部插件

问题描述 投票:0回答:2

我正在尝试使用Autofac 5 IoC Container建立一个简单的。NET Core 3.1项目。

我添加了对最新的自动配置5.0.0

package的引用。

我已经通过简单的JSON配置创建了接口,实现和测试应用程序(this guide之后:

{
  "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,实现'找不到。它可能需要组装资格,例如“ MyType,MyAssembly”

我已将代码上传到GitHub。任何帮助表示赞赏。

P.S。

Visual Studio 2019 16.4.5 Enterprise,Windows 10 1909 x64 Professional

UPDATE:

要澄清更多-我的最终目标是让Interfaces.dll没有特殊引用,Implementations.dll仅引用Interfaces.dll和< [Test.exe仅引用Interfaces.dll(当然还有Autofac软件包)。我希望Autofac通过Reflection从特定的程序集(在config.json中指定)加载特定的类。使用Unity Container可以实现,而我希望通过Autofac IoC达到相同的效果。

再次一次:

我需要一个没有任何引用Implementations.dll的项目的麻烦,我应该能够在不重新编译的情况下更改特定的实现(通过更改config.json)。
我正在尝试设置一个使用Autofac 5 IoC容器的简单.NET Core 3.1项目。我添加了对最新的Autofac.Configuration 5.0.0包的引用。我已经创建了接口,实现和...
c# .net-core dependency-injection inversion-of-control autofac
2个回答
2
投票
[我发现这比Autofac问题更多是“ .NET Core程序集加载”问题。

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.