Mvvm 决定是否将模型或存储库/服务传递给我的视图模型?

Mvvm 决定是否将模型或存储库/服务传递给我的视图模型?,mvvm,Mvvm,我经常遇到这个决定,我经常在采取什么方法上摇摆不定 许多MVVM示例都将模型传递到视图模型的构造函数中。因此,每个VM都耦合到一个模型。检索模型和创建VM的逻辑在VM“某处”之外。模型必须知道如何保持它的变化 另一种选择是将某种上下文、服务或存储库传递给VM,VM决定它需要什么模型。这意味着虚拟机有更长的生命周期,可以被重用来显示许多不同的模型。VM将使用提供的服务将更改提交回模型 是否有人提出了为给定场景制定最佳方法的规则?视图模型通常被定义为模型上的视图,即它的存在是为了在模型和视图之间进行

我经常遇到这个决定,我经常在采取什么方法上摇摆不定

许多MVVM示例都将模型传递到视图模型的构造函数中。因此,每个VM都耦合到一个模型。检索模型和创建VM的逻辑在VM“某处”之外。模型必须知道如何保持它的变化

另一种选择是将某种上下文、服务或存储库传递给VM,VM决定它需要什么模型。这意味着虚拟机有更长的生命周期,可以被重用来显示许多不同的模型。VM将使用提供的服务将更改提交回模型


是否有人提出了为给定场景制定最佳方法的规则?

视图模型通常被定义为模型上的视图,即它的存在是为了在模型和视图之间进行调解。虽然完全可能有一个足够通用的ViewModel来调解多个模型类型,但实际上情况正好相反,对于单个模型类型可能存在多个ViewModel,特别是在应用程序的不同部分需要以不同方式渲染单个模型的情况下


此外,我通常将模型视为一个简单的数据对象,并在一个单独的服务中实现检索和持久化逻辑,该服务可以使用依赖项注入进行传递。话虽如此,如果将持久性逻辑直接构建到模型中更适合您的场景,那么这并没有错。不过,我更喜欢将该层拆分,以便通过模拟更容易地进行测试。

我是否正确地将IModel和您的to say IModelRepository都注入到ViewModel中?