我的问题类似this question。然而,有一个重要的区别。我正在使用Unity Container。问题是我需要在同一个构造函数中使用两个接口实例。这些实例可以来自相同的实现,也可以来自不同的实现。下面是构造函数的简化版本。
public SomeService(IMyInterface instance1, IMyInterface instance2) : ISomeService
在我之前提到的问题中,不同的类中使用了不同的实现。但在我的情况下,我需要在一个班级中分离。
Unity可以实现吗?如果没有,是否有最近具有此功能的容器?
答案 0 :(得分:1)
您可以使用命名注册和InjectionConstructor
,如下所示:
container.RegisterType<IMyInterface, Impl1>("Impl1");
container.RegisterType<IMyInterface, Impl2>("Impl2");
container.RegisterType<ISomeService, SomeService>(
new InjectionConstructor(
new ResolvedParameter<IMyInterface>("Impl1"),
new ResolvedParameter<IMyInterface>("Impl2")));
var service = container.Resolve<ISomeService>();
IMO,最好不要使用DI容器,而是在有&#34;复杂&#34;时使用Pure DI。像你在这里的对象图。有关详细信息,请参阅my article here。