Car*_*ven 4 c# events design-patterns mvvm
我读到有关在MVVM设计中实现的Event Aggregator模式可以帮助解耦ViewModel之间的通信.
我认为Event Aggregator真是个好主意.但是,第二个想法是,事件聚合器是否仅由ViewModels使用?模型可以发布到事件聚合器中的事件并从中订阅吗?
也许,通过这个,ViewModel和Model之间的数据变化可以通过EventAggregator进行关联.这可能允许一个ViewModel从多个模型中检索信息,而不需要ViewModel来存储对所有模型的引用.
如果我这样做,是否会导致整个架构变得混乱并最终变成反模式?什么是最佳做法?
编辑:
我想我应该解释一下为什么我这么问.我看到三个可能的问题:
首先,使用DI,我的ViewModel包装了Model.然后我的ViewModel可以与我的模型通信.但是,不是相反.因此,如果我的模型本身或外部都有一些更改,则需要一种方法来通知其ViewModel.
其次,除了ViewModels必须与其他ViewModel进行通信之外,在我看来,模型必须与ViewModel一样多,甚至更多地与其他模型进行通信.这些导致我认为我可以将所有内容链接到EventAggregator.
第三,我发现在某些情况下,单个ViewModel需要从多个模型中提取信息.但是通过ViewModel构造函数的依赖注入,它只能从一个Model中读取.
有几个地方您可能想要使用事件聚合器:
值得记住的是,使用事件聚合器有一些缺点:
通常我不使用事件聚合器来为服务通信提供服务(在我的主要工作项目中,我们有20个事件,其中只有1个是服务服务).这是因为我的大多数服务调用都是简单的一次性数据请求,而不是连续的更新流.
| 归档时间: |
|
| 查看次数: |
2600 次 |
| 最近记录: |