【发布时间】:2011-10-11 09:27:57
【问题描述】:
我希望能够做到这一点:
<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");
..我得到相同的单例实例,而不是每个组件的单独实例。
这可能吗?
谢谢。
【问题讨论】:
-
如果只需要一个组件,为什么还要注册两个组件?
-
在实际代码中,组件名是一个接口名。我希望能够将 ISomething 映射到单例实例,并将 ISomethingElse 映射到同一个实例。我需要在运行时关闭接口名称,所以我需要通过城堡配置查找共享实例。
-
我已经在不使用 Castle 的情况下解决了这个问题,但如果可能的话,我想使用它。它用于缓存,其中 N 个接口解析到任何给定的缓存实例,因此我可能需要多个组件用于一个单例实例。
标签: inversion-of-control castle-windsor ioc-container