Castle windsor 流畅地选择要注入的组件

Castle windsor 流畅地选择要注入的组件,castle-windsor,Castle Windsor,我有一些组件实现了相同的接口,我想选择哪一个被注入我的存储库 Component.For<IRepository>().ImplementedBy<Repository>().<whatShouldGoHere>() 深入研究后,我发现委托是来自TypedFactoryFacility的工件。似乎有一些变化,所以它现在只能按类型解析。在旧的Castle版本中,字符串参数用于按名称选择组件。工厂将对此技巧进行修改 您需要将FactorySupportFaci

我有一些组件实现了相同的接口,我想选择哪一个被注入我的
存储库

 Component.For<IRepository>().ImplementedBy<Repository>().<whatShouldGoHere>()

深入研究后,我发现委托是来自
TypedFactoryFacility
的工件。似乎有一些变化,所以它现在只能按类型解析。在旧的Castle版本中,字符串参数用于按名称选择组件。

工厂将对此技巧进行修改

您需要将
FactorySupportFacility
添加到您的容器中,以使其正常工作

有关更多详细信息,请参阅位于的温莎城堡文档


另请参见。

DependsOn不适用于静态以外的其他功能,问题在于注入的委托无法以以前的方式解析。我最终注册了自己的组件来处理这个特定的委托

container.Register(Component.for<Func<ISession,string>>().ImplementedBy(sessionName => container.resolve<ISession>(sessionName));
container.Register(Component.for().ImplementedBy(sessionName=>container.resolve(sessionName));

(我根据记忆输入了上述内容,因此请原谅任何输入错误)

我试图创建的组件是通用的,因此我宁愿避免使用工厂。不过,感谢您的建议。
container.Register(Component.for<Func<ISession,string>>().ImplementedBy(sessionName => container.resolve<ISession>(sessionName));