如何在不涉及表示层(即视图模型)的情况下在WPF应用程序中注入非表示依赖项(如存储库)?

时间:2016-10-13 12:45:00

标签: .net wpf mvvm dependency-injection onion-architecture

我试图将DI应用到我的WPF应用程序(使用MVVM)。我想坚持onion architecture,因此,我的模型有一个IRepository接口,它通过IoC容器从其组合根注入到应用程序中。

有无数的来源like this SO answerthis post on wpftutorial.net与WPF谈论DI,但显示存储库被注入视图模型。这样做对我来说似乎并不合适。在我看来,视图模型不应该关注(即不应该知道)存储库。

有没有办法设计我的应用程序,使其正确地遵循洋葱架构,并且不涉及存储库依赖注入中的表示层(因为组合根必须在视图所在的顶级/可执行文件?

1 个答案:

答案 0 :(得分:1)

一种方法是使用接口定义存储库,然后使用unity,您可以插入存储库接口的正确实现。

此处的链接应该让您开始使用unity:

https://msdn.microsoft.com/en-us/library/dn223671(v=pandp.30).aspx

<强>更新
通过查看链接上的洋葱方法,我建议在业务/应用程序逻辑层中插入您的存储库。并根据需要调用这些方法作为视图模型。