MVVM,使用 PRISM 6 和 Unity。
Bootstrapper 负责创建初始视图,该视图又自动连接到 ViewModel(即,视图模型被解析并且它的 DI 被处理)。
现在视图模型有一个其他视图模型的集合。
这个集合可以通过用户输入添加到,比如按下按钮。
集合中的视图模型需要访问我必须管理“工作区”(图像文件夹等的路径)的单例。所以我还希望这些对象的创建能够将“工作区”单例注入其中。
在创建新 ViewModel 的方法中,使用 DI/IoC 创建它的正确方法是什么?
我看到它的唯一方式(危险地说“只有”我知道,这就是我寻求帮助的原因)是:
将 Unity Container 注入到包含集合的视图模型中,然后在按下按钮时解析新的视图模型。新的视图模型将设置为依赖于“工作区”对象的接口。
当按钮被点击时创建一个new
视图模型并将“工作区”传递给构造函数(当然工作区需要被 DI 到父视图模型中才能传递下来)。
我已经阅读了多个通过 DI 将容器向下传递的地方,以便可以使用 Resolve<> 不是“正确的”。
这是创建通用工厂有帮助的地方吗?这仍然迫使我将容器向下传递,但现在它只是以工厂的形式......
public T factory<T>(IContainer _container)
{
return _container.Resolve<T>();
}
紫衣仙女
相关分类