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配置中有相同接口的两个实现的问题。

相关内容

热门资讯

免费测试版"微信小程... 免费测试版"微信小程序牵手辅助"开挂(透视)辅助平台(其实是真的有挂的)-哔哩哔哩;微信小程序牵手辅...
5分钟带你了解!麻友圈安全版插... 您好:麻友圈安全版插件这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
八分钟带你发现!蜀山四川破解好... 蜀山四川破解好友版辅助是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以...
一分钟揭秘"创思维激... 一分钟揭秘"创思维激k透视挂"开挂(透视)辅助安装(原来确实是有挂)-哔哩哔哩;最新版2026是一款...
第六分钟带你了解!牵手跑得软件... 第六分钟带你了解!牵手跑得软件(透视挂)透视神器外挂开挂辅助平台(果然有挂);无需打开直接搜索加(薇...
第2分钟带你辅助!网易棋牌辅助... 大家好,今天小编来为大家解答网易棋牌辅助器这个问题咨询软件客服可以免费测试直接加微信(1367043...
终于懂了"广西老友玩... 《终于懂了"广西老友玩游戏辅助器"开挂(透视)辅助插件(果然确实有挂的)-哔哩哔哩》 广西老友玩游戏...
三分钟带你了解!小程序66徐州... 三分钟带你了解!小程序66徐州辅助(透视挂)查到实测外挂开挂辅助工具(原来真的有挂);无需打开直接搜...
第一分钟带你开挂!浙江宝宝游戏... 第一分钟带你开挂!浙江宝宝游戏辅助器,贪吃蛇辅助器2022,曝光教程(真是有挂)-哔哩哔哩【无需打开...
盘点一款"拱趴大菠萝... 《盘点一款"拱趴大菠萝有辅助工具吗"开挂(透视)辅助平台(果然是有挂的)-哔哩哔哩》 拱趴大菠萝有辅...