mvvm - 数据源、存储库、 View 模型和 IoC 容器。真的需要存储库吗?

标签 mvvm dependency-injection inversion-of-control repository-pattern mvvm-light

我目前有这样的流程:
Repository被注入(inject) Datasource . ViewModel被注入(inject) Repository .

因为需要转换到 UI 的项目和突变(删除、更改)不断流动,所以我不在存储库中保留项目集合。因此,我最终得到了一个只在数据源和 View 模型之间传递项目的存储库。

我一直都明白,你不应该直接在 UI 层中使用 Datasource(ViewModels 在我的 UI 层中)。但是,如果您使用依赖注入(inject),情况仍然如此吗?我是在使用 Repository 模式还是只是给我造成了开销? (现在感觉就是这样。)

我最初实现了存储库来分离 UI 和数据源,但我发现 DI 在没有存储库的情况下做得很好。

最佳答案

您可能想看看 Oren Eini(又名 Ayende Rahien)的一些博客文章

The evils of the repository abstraction layer

或者

Repository is the new singleton

存储库通常只是“流加热器”。他们除了转发调用和结果之外什么都不做,只是增加了开销。

顺便说一句:如果你应该或不应该使用存储库与依赖注入(inject)无关!

更新

Oren 刚刚发布了 new post on this topic .

关于mvvm - 数据源、存储库、 View 模型和 IoC 容器。真的需要存储库吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8886832/

相关文章:

C# - Ninject、IoC 和工厂模式

wpf - 如何在 wpf 中使用 MVVM 处理 ComboBox 的 SelectionChanged 事件?

c# - ASP.Net MVC 3 Unity IoC 处理

c# - ViewModel可以有一个 child 也是ViewModel吗?

c# - 类库中的 IoC。在哪里引导

c# - IServiceProvider.GetService(Type serviceType) 的目的是什么?

javascript - 尽管其他 Controller 和服务正常工作,但仍出现未知提供程序错误

java - 如何实现用组单例分隔的 spring

android - 在android中的服务中访问viewModel

c# - WPF MVVM ComboBox 标记选择