嵌套视图模型上的 IOC 容器
IOC container on nested view models
我正在开发一个 WPF 应用程序,试图尽可能地遵守 MVVM 模式,包括 DI 和 IoC。
该应用程序的结构为 "ViewModel first",其中视觉层次结构包含以下内容:
MainView
|-Login View
|-Content View
|-Content A
|-Content B
|-Content x
每个视图都由其 VM 引用; "MainViewModel" 和 "ContentViewModel" 公开了一个 属性,它引用子 VM 来控制内部元素的导航。
也就是说 "Content A"、"Content B" 和类似的项目依赖于我想通过 DI 管理的各种服务。
我使用 UnityContainer 并在 "OnStartup" 中注册了所有依赖项,但我的问题来了:因为我不想使用 ServiceLocator 如何让 "sub-viewmodels" 知道容器的?我很确定我在理论上做错了什么,但我没有在网上找到任何参考资料。
我在网上找到的每个tutorial/example只需要在容器中注册依赖,然后立即解析模型。
由于父视图模型可以访问容器并负责创建任何子视图模型,因此当您在父视图模型中实例化子视图模型时,您可以简单地注入对容器的引用:
this.ChildViewModelProperty = new ChildViewModel(_container);
这是构造函数依赖注入的典型例子
我正在开发一个 WPF 应用程序,试图尽可能地遵守 MVVM 模式,包括 DI 和 IoC。 该应用程序的结构为 "ViewModel first",其中视觉层次结构包含以下内容:
MainView
|-Login View
|-Content View
|-Content A
|-Content B
|-Content x
每个视图都由其 VM 引用; "MainViewModel" 和 "ContentViewModel" 公开了一个 属性,它引用子 VM 来控制内部元素的导航。 也就是说 "Content A"、"Content B" 和类似的项目依赖于我想通过 DI 管理的各种服务。
我使用 UnityContainer 并在 "OnStartup" 中注册了所有依赖项,但我的问题来了:因为我不想使用 ServiceLocator 如何让 "sub-viewmodels" 知道容器的?我很确定我在理论上做错了什么,但我没有在网上找到任何参考资料。 我在网上找到的每个tutorial/example只需要在容器中注册依赖,然后立即解析模型。
由于父视图模型可以访问容器并负责创建任何子视图模型,因此当您在父视图模型中实例化子视图模型时,您可以简单地注入对容器的引用:
this.ChildViewModelProperty = new ChildViewModel(_container);
这是构造函数依赖注入的典型例子