gpt4 book ai didi

dependency-injection - 使用 IOC 框架绑定(bind)到多个具体实现?

转载 作者:行者123 更新时间:2023-12-04 07:11:12 26 4
gpt4 key购买 nike

我对 DI/IOC 容器的概念相对熟悉,我曾在之前已经使用它们的项目上工作过。然而,对于这个新项目,没有现有的框架,我不得不选择一个。

长话短说,在某些场景中,我们将为给定接口(interface)配置多个实现。环顾网络,似乎使用任何主流框架来选择性地绑定(bind)到其中一个实现都非常简单。

然而,在某些情况下,我们需要运行所有配置的实现。我已经在这里搜索了所有 IOC 标记的帖子,我正在尝试翻阅主要框架的文档(到目前为止,查看 Unity、Ninject 和 Windsor),但是文档通常很少,我没有时间检查所有软件包的来源。

那么,是否有任何主流 IOC 容器允许我为我的一项服务绑定(bind)到所有已配置的具体类型?

最佳答案

当我第一次尝试解析已注册类型的所有实现时,让我感到震惊的一件事是,当您调用 ResolveAll() 时,不会返回未命名(默认)类型的注册。仅返回命名实例。

所以:

IUnityContainer container = new UnityContainer();
container.RegisterType<IMyInterface, MyFirstClass>();
container.RegisterType<IMyInterface, MySecondClass>("Two");
container.RegisterType<IMyInterface, MyThirdClass>("Three");

var instances = container.ResolveAll<IMyInterface>();

Assert.AreEqual(2, instances.Count, "MyFirstClass doesn't get constructed");

关于dependency-injection - 使用 IOC 框架绑定(bind)到多个具体实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/315964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com