Autofac的JSON配置中有相同接口的两个实现
创始人
2024-09-23 01:31:00
0

在Autofac的JSON配置中,如果有相同接口的两个实现,可以使用Named来标识不同的实现,并在注册时使用Named进行区分。

首先,假设有以下接口和两个实现类:

public interface IService
{
    void Method();
}

public class ServiceA : IService
{
    public void Method()
    {
        Console.WriteLine("Service A");
    }
}

public class ServiceB : IService
{
    public void Method()
    {
        Console.WriteLine("Service B");
    }
}

然后,创建一个JSON配置文件autofac.json,如下所示:

{
  "components": [
    {
      "type": "Namespace.ServiceA, AssemblyName",
      "services": [
        {
          "type": "Namespace.IService"
        },
        {
          "type": "Namespace.IService",
          "name": "ServiceA"
        }
      ]
    },
    {
      "type": "Namespace.ServiceB, AssemblyName",
      "services": [
        {
          "type": "Namespace.IService",
          "name": "ServiceB"
        }
      ]
    }
  ]
}

在JSON配置中,我们为ServiceAServiceB分别定义了两个IService的服务。

最后,在代码中使用ContainerBuilder加载JSON配置并构建容器:

var builder = new ContainerBuilder();
var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("autofac.json")
    .Build();

builder.RegisterModule(new ConfigurationModule(configuration));
var container = builder.Build();

现在,我们可以从容器中解析出IService的实例,并根据需要选择不同的实现:

var serviceA = container.Resolve(); // 使用默认实现 ServiceA
var serviceB = container.ResolveNamed("ServiceB"); // 使用命名实现 ServiceB

serviceA.Method(); // 输出 "Service A"
serviceB.Method(); // 输出 "Service B"

通过使用Named在JSON配置中标识不同的实现,并使用ResolveNamed方法在代码中解析命名实现,我们可以解决Autofac的JSON配置中有相同接口的两个实现的问题。

相关内容

热门资讯

2026版技巧!wepoker... 2026版技巧!wepoker软件辅助程序,德普之星透视辅助插件,都是是有挂(有挂解惑)1、德普之星...
有了最新消息!hhpoker德... 有了最新消息!hhpoker德州真的假的,德扑之星透视免费,原来存在有挂(有挂神器)1、进入到德扑之...
黑科技教程!德州透视是真的假的... 您好,德扑之星辅助器app这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很...
据公告内容!we poker辅... 据公告内容!we poker辅助器v3.3,德普辅助软件,真是是真的有挂(有挂方式)1、下载好德普辅...
攻略辅助挂!哈糖大菠萝怎么开挂... 攻略辅助挂!哈糖大菠萝怎么开挂,德扑软件,确实确实有挂(有挂规律)1、进入游戏-大厅左侧-新手福利-...
随着!hhpoker辅助挂是真... 随着!hhpoker辅助挂是真的吗,智星菠萝有挂吗,果然真的是有挂(有挂方略)亲,关键说明,智星菠萝...
近期!wepoker私人局有透... 近期!wepoker私人局有透视吗,德普之星透视辅助软件下载,其实真的有挂(有挂规律)一、德普之星透...
近期!hhpoker是真的假的... 近期!hhpoker是真的假的,德扑之心免费透视,好像是有挂(确实有挂)1)德扑之心免费透视有没有挂...
方法辅助挂!hhpoker的辅... 方法辅助挂!hhpoker的辅助是真的吗,德普之星辅助工具如何设置,好像存在有挂(证实有挂)暗藏猫腻...
2026版软件!约局吧能不能开... 2026版软件!约局吧能不能开挂,德普之星辅助工具如何打开,竟然存在有挂(有挂技巧)1、玩家可以在德...