我通过 Prism 指导工作,并认为我掌握了他们的大多数通信工具。
命令非常简单,因此很明显,DelegateCommand 将仅用于将 View 与其 Model 连接起来。
当涉及到跨模块通信时,特别是何时使用 EventAggregation 而不是复合命令时,这有点不太清楚。
实际效果是一样的,例如
- 您发布一个事件 -> 所有订阅者都会收到通知并执行代码作为响应
- 您执行一个复合命令->所有已注册的命令都被执行并附带它们的代码
两者都按照“触发并忘记”的方式工作,即他们不关心触发事件/执行命令后订阅者的任何响应。
尽管我知道两者的实现(在引擎盖下)非常不同,但我很难看到使用上的实际差异。
那么我们是否应该考虑一下它的实际含义——事件?那是当事情发生(事件发生)时吗?用户没有直接请求的东西,比如“网络请求已完成”?
指挥部呢?这是否意味着用户点击了某些东西,从而向我们的应用程序发出命令,直接请求服务?
是这样吗?或者是否有其他方法可以确定何时使用其中一种通信工具而不是另一种。该指南虽然是我读过的最好的文档之一,但没有给出具体解释。
所以我希望参与/使用 Prism 的人可以帮助阐明这一点。