C# EventAggregator是否仅适用于MVVM中的ViewModels?
我了解到MVVM设计中实现的事件聚合器模式有助于解耦ViewModels之间的通信 我认为事件聚合器确实是个好主意。但再想想,事件聚合器是否仅由ViewModels使用?模型可以发布到事件聚合器中的事件并从中订阅吗 也许通过这种方式,ViewModel和Model之间的数据更改可以通过EventAggregator进行关联。这可能会允许一个ViewModel从多个模型检索信息,而不需要ViewModel存储对所有模型的引用 如果我这样做,会不会导致整个架构变得混乱,最终成为一种反模式?最佳做法是什么 编辑: 我想我应该解释一下我为什么问这个问题。我看到三个可能的问题: 首先,使用DI,我的ViewModel包装模型。然后,我的ViewModel可以与我的模型通信。然而,情况并非如此。因此,如果我的模型本身或外部有一些更改,它需要一种通知其ViewModel的方法 其次,除了ViewModels必须与其他ViewModels通信之外,在我看来,模型与其他模型的通信量与ViewModels一样大,甚至更多。这些导致了我认为我可以将所有内容链接到EventAggregatorC# EventAggregator是否仅适用于MVVM中的ViewModels?,c#,events,design-patterns,mvvm,C#,Events,Design Patterns,Mvvm,我了解到MVVM设计中实现的事件聚合器模式有助于解耦ViewModels之间的通信 我认为事件聚合器确实是个好主意。但再想想,事件聚合器是否仅由ViewModels使用?模型可以发布到事件聚合器中的事件并从中订阅吗 也许通过这种方式,ViewModel和Model之间的数据更改可以通过EventAggregator进行关联。这可能会允许一个ViewModel从多个模型检索信息,而不需要ViewModel存储对所有模型的引用 如果我这样做,会不会导致整个架构变得混乱,最终成为一种反模式?最佳做法是
第三,我发现在某些情况下,单个ViewModel需要从多个模型中提取信息。但是,通过ViewModel的构造函数进行依赖项注入,它只能从一个模型中读取数据。有几个地方可能需要使用事件聚合器:
通常我不使用事件聚合器来提供服务到服务的通信(在我的主要工作项目中,我们有20个事件,其中只有一个是服务到服务)。这是因为我的大多数服务调用都是简单的一次性数据请求,而不是连续的更新流 我迫不及待的回答是,这似乎不对。因为您可以通过一个接口在Model和ViewModel之间使用依赖项注入。所以你不必手动管理订阅者/发布者…@Johnny是的,我可以通过接口使用DI。但是我看到了两个可能的问题:首先,对于DI,我的ViewModel包装了模型。然后,我的ViewModel可以与我的模型通信。然而,情况并非如此。因此,如果我的模型本身或外部有一些更改,它需要一种通知其ViewModel的方法。其次,除了ViewModels必须与其他ViewModels通信之外,在我看来,模型与其他模型的通信量与ViewModels一样大,甚至更多。这些导致了我认为我可以把所有东西都链接到EventAggregator上。好的,实际上我看到了3个可能的问题,这就引出了这个问题。我用这个问题的动机更新了我的问题。再想一想,我倾向于同意你//编辑:我希望这方面有资格的人能回答你的问题。