温莎城堡 3.0 具有相同名称的不同服务 - 如何
本文关键字:服务 如何 城堡 | 更新日期: 2023-09-27 18:33:50
假设我有两个接口IFirst和ISecond,它们都有几个实现,例如FirstClassForMe,FirstClassForYou,SecondClassForMe,SecondClassForYou。
我想在 IoC 容器中注册它们(无论哪种生活方式(:
this.container.Register(
Component.For<IFirst>().ImplementedBy<FirstClassForMe>().Named("Me"),
Component.For<IFirst>().ImplementedBy<FirstClassForYou().Named("You"),
Component.For<ISecond>().ImplementedBy<SecondClassForMe>).Named("Me"),
Component.For<ISecond>().ImplementedBy<SecondClassForYou>().Named("You"))
我想按如下方式使用它:
var forWho = this.GetCode();
var first = this.Container.Resolve<IFirst>(forWho);
var second = this.Container.Resolve<ISecond>(forWho);
this.Work(first, second);
但是在温莎,我得到了一个组件注册异常
但是,我相信,对于无法注册组件 Me。已经有一个具有该名称的组件。是否要改为修改现有组件?如果没有,请确保指定唯一的名称。
每个注册,只要对(接口;代码(是唯一的,就可以解决这种依赖关系。是否有可能使温莎根据这种情况工作?例如,查找 IFirst 的所有注册,然后按名称选择一个。
温莎的服务覆盖将适用于您想要做的事情。