MVVM中视图之间的共享数据服务 - 全局或构造函数注入?

时间:2010-12-17 16:44:33

标签: wpf silverlight mvvm

如果我有一个数据/ Web服务,多个视图模型需要访问什么是首选的“MVVM方式”?

我是否拥有全局静态服务,或者是否将我的服务实例传递给我的所有视图模型?我个人看不到一种方法优于另一种方法的优势。

2 个答案:

答案 0 :(得分:2)

传入服务的接口版本可以让您的课程轻松进行单元测试。对于全局静态,这不是那么干净或容易。

使类接受接口还定义了类的合约。你基本上是在说,“ClassA要求IServiceA和IServiceB正常运行”。对于全局静态,没有这样的合同。

答案 1 :(得分:0)

除了使用依赖注入之外,还要考虑ServiceLocater方法,其中每个ViewModel如果未传递服务实例,将调用ServiceLocator以在运行时获取已注册服务的实例。

Fowler on DI and ServiceLocator

MSDN on ServiceLocator