0

尝试在容器中解析我的存储服务对象(主要作为单例接口),

有一个域模块,它的ViewModels将使用服务模块的服务。

你在哪里以及如何推荐这个,在域模块内或域模块的视图模型内解析

如果我可以在 ViewModel 的构造函数中执行此操作,以下代码是否足够,在服务注册后,如果我不想这样做怎么办:

    public DetailsViewModel(IWService wSvc,)
    {
        wService = wSvc;
    }

在“视图模型”中获取服务对象(存储在容器中)的最佳方法是什么?

我在这里提供的只是一个样本。谢谢你的帮助

4

1 回答 1

3

我建议您的 ViewModel 通过构造函数的依赖注入来获取他们使用的服务。无论您决定采用哪种方法,您都应该记住,主要概念之一是测试 ViewModel 的能力。通常,这将涉及能够为您的 ViewModels 提供服务的模拟实现,以独立于这些服务测试它们的行为。如果你使用构造函数注入,你可以简单地创建你的模拟服务,然后将它们传递给你的 ViewModel 的构造函数来测试你是否要编写单元测试。即使您此时不打算编写单元测试,我认为这是养成遵循某种设计方案的习惯的正当理由。

public class SomeViewModel
{
    private IEventAggregator events;
    private ISomeService someService;

    public SomeViewModel(IEventAggregator events, ISomeService someService)
    {
        this.events = events;
        this.someService = someService;
    }
}
于 2013-02-20T16:32:31.623 回答