我真的很喜欢依赖注入的想法。我在应用这个概念时遇到了麻烦,因为我看到的大多数示例都是针对 ASP.NET MVC 的。
这是我得到的:WPF -> 服务 -> 存储库。服务会注入存储库,而我的视图模型(至少一个,无论如何)会注入服务。
然后在我的 WPF App.xaml 中,我将覆盖 OnStartup 方法。这是我创建 Ninject 并解决我的第一个视图的地方。
当涉及到多个视图时,我会迷路。例如,假设我将 ServiceA 和 ServiceB 注入到我的第一个视图模型中(在 App.xaml 中)。假设我希望 ServiceC 在另一个视图模型的构造函数中,我将如何将它注入到构造函数中?
在代码中,它是这样的:
public class ViewModel1
{
private readonly IServiceA serviceA;
private readonly IServiceB serviceB;
public ViewModel1(IServiceA serviceA, IServiceB serviceB)
{
this.serviceA = serviceA;
this.serviceB = serviceB;
}
public void OpenASettingsWindow()
{
// How do I resolve this view?
var window = new View(new ViewModel2(new ServiceC()));
}
}