我试图将DI应用到我的WPF应用程序(使用MVVM)。我想坚持onion architecture,因此,我的模型有一个IRepository
接口,它通过IoC容器从其组合根注入到应用程序中。
有无数的来源like this SO answer和this post on wpftutorial.net与WPF谈论DI,但显示存储库被注入视图模型。这样做对我来说似乎并不合适。在我看来,视图模型不应该关注(即不应该知道)存储库。
有没有办法设计我的应用程序,使其正确地遵循洋葱架构,并且不涉及存储库依赖注入中的表示层(因为组合根必须在视图所在的顶级/可执行文件?
答案 0 :(得分:1)
一种方法是使用接口定义存储库,然后使用unity,您可以插入存储库接口的正确实现。
此处的链接应该让您开始使用unity:
https://msdn.microsoft.com/en-us/library/dn223671(v=pandp.30).aspx
<强>更新强>
通过查看链接上的洋葱方法,我建议在业务/应用程序逻辑层中插入您的存储库。并根据需要调用这些方法作为视图模型。