跨多个组件共享温莎城堡单例实例

发布于 2024-12-09 08:09:13 字数 515 浏览 2 评论 0原文

我希望能够做到这一点:

<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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感性不性感 2024-12-16 08:09:13

如果您在运行时拥有的只是接口“Name”,那么您打算如何调用通用 Resolve<> 接口?温莎容器上的方法?如果您确实只想要一个 IFoo 的单例实例,而不管组件“名称”如何,那么只需将一个实例注册为单例并调用:

IFoo foo = m_container.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:

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

If you are looking to have multiple interfaces return the same component you can look at using Forward types.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文