在多个组件之间共享castle windsor singleton实例

时间:2011-10-11 09:27:58

标签: inversion-of-control castle-windsor ioc-container

我希望能够做到这一点:

<component id="Component1" service="Foo.IFoo, Foo" type="Foo.Bar, Foo" lifestyle="singleton" />
<component id="Component2" service="Foo.IFoo, Foo" type="Foo.Bar, Foo" lifestyle="singleton" />

这样当我这样做时:

IFoo foo = m_container.Resolve<IFoo>("Component1");

或者这个:

IFoo foo = m_container.Resolve<IFoo>("Component2");

..我得到了相同的单例实例,而不是每个组件的单独实例。

这可能吗?

感谢。

1 个答案:

答案 0 :(得分:0)

如果您拥有的只是运行时的“名称”界面,那么您打算如何调用通用的Resolve&lt;&gt;在windsor容器上的方法?如果你真的只想要一个IFoo的单例实例而不管comopnent“Name”,那么只需将一个注册为一个单例并调用:

IFoo foo = m_container.Resolve<IFoo>();

如果您希望让多个接口返回相同的组件,您可以使用转发类型查看。