跨多个组件共享温莎城堡单例实例
我希望能够做到这一点:
<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");
..我得到相同的单例实例,而不是每个组件都有一个单独的实例。
这可能吗?
谢谢。
I want to be able to do this:
<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" />
Such that when I do this:
IFoo foo = m_container.Resolve<IFoo>("Component1");
Or this:
IFoo foo = m_container.Resolve<IFoo>("Component2");
..I get the same singleton instance, not a seperate instance per component.
Is this possible?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您在运行时拥有的只是接口“Name”,那么您打算如何调用通用 Resolve<> 接口?温莎容器上的方法?如果您确实只想要一个 IFoo 的单例实例,而不管组件“名称”如何,那么只需将一个实例注册为单例并调用:
如果您希望有多个接口返回相同的组件,您可以使用 Forward 类型。
If all you have is the interface "Name" at runtime how are you planning to call the generic Resolve<> method on the windsor container? If you truely only want one singleton instance of IFoo regardless of the comopnent "Name" then just register one as a singleton and call:
If you are looking to have multiple interfaces return the same component you can look at using Forward types.