我正在使用 MVVM 模式开发 WPF 应用程序。我正在使用 MVVM Light 库,并且我也在尝试使用依赖注入器(我正在考虑 Ninject 和 Unity)。
我已经阅读了很多博客文章,我对让我的班级相互交流的“正确”方式感到很困惑。特别是,我不知道什么时候使用依赖注入,什么时候依赖中介模式。
让我们考虑一个例子。我有一个 ViewModel,我们称之为 DataViewModel,以及提供某种数据的 Data 类。他们之间如何更好地沟通:
A. 使用 IData 接口注入对 DataViewModel 的依赖?这样 Data 就不必依赖 Messenger,但如果 Data 发生变化,它必须提供一个事件,并且 ViewModel 必须订阅它。
B. 依赖中介者模式(在 MVVM Light as Messenger 中实现),在 Model 和 ViewModel 之间发送消息?这种方式根本不需要使用依赖注入,因为整个通信将基于消息。
此外,我的 ViewModel 是否应该在其他 ViewModel 上注入依赖关系,还是仅仅依赖 Messenger 会更好?如果是第一个,是否有必要为每个 ViewModel 定义一个单独的接口?我认为为每个 VM 定义一个接口将是一项额外的工作,但也许值得。