【发布时间】:2009-12-11 16:41:42
【问题描述】:
我在使用 Unity 和 WPF 时遇到了一些问题。场景是我有一个遵循 MVVM 设计模式的 WPF 应用程序。 A 有一个名为 ViewKDI 的模块。在这个模块中,我有一个名为 ViewKDIService 的服务,ViewKDIService 服务利用另一个名为 UserService 的服务。
每次我加载 ViewKDI 模块时,我都希望 Unity 返回 ViewKDIService 和 UserService 的新实例。
我已将以下内容放入 shell 引导程序中:
Container.RegisterType<IUserService, UserService>();
在 ViewKDI 模块中,我添加了以下内容:
Container.RegisterType<IViewKDIService, ViewKDIService>();
每次 ViewKDI 模块加载时都会调用 ViewKDIService 构造函数。但是 UserService 构造函数只在第一次被调用,这意味着我没有得到一个新的 UserService 实例。
我也需要 unity 给我一个新的 UserService 实例,以便我可以将这个会话与应用程序的其余部分分开管理。
有什么想法吗?
谢谢 费萨尔
【问题讨论】:
-
您能否提供更多关于您何时解析每种类型的详细信息? IUserService 是 ViewKDIService 的依赖项吗?
-
我没有显式调用 resolve,我只是将接口放入我的 ViewModel 的构造函数中,并让 Unity 解决它们。 IUserService 不依赖于 IViewKDIService。
-
查看注入了哪些对象 IUserService 和 IViewKDIService 有助于了解它们的生命周期。例如都注入到您的 ViewModel 或只是 IUserService?
标签: wpf unity-container