【发布时间】:2009-01-14 18:58:04
【问题描述】:
我有一个包含以下三个模块的应用程序:
- 搜索(搜索对象)
- 列表(显示搜索结果)
- Painter(允许我编辑对象)- 并不总是加载此模块
(每个对象都是我可以在painter中编辑的图形)。
当我在画家中打开一个对象时,它会添加到画家中已经存在的对象中,我可以移动它并更改它。
我正在使用类似于 EventAggregator 的对象在模块之间进行通信。例如,为了显示搜索结果,我发布了一个由 List 模块捕获的“ShowList”事件(我不确定这是执行此操作的最佳方法,如果有人有更好的想法,请发表评论...)。
搜索模块的一个功能要求它在painter 中获取选定对象(如果painter 可用),我不确定最好的方法是什么...
我想到了这些解决方案:
每当 Painter 中选定的对象发生变化时,它都会发布一个“PainterSelectedObjectChanged”事件,该事件将被搜索模块捕获并存储起来供以后使用。
当搜索模块需要所选对象时,它将发布一个“RequestingPainterSelectedObject”事件,该事件将被画家模块捕获。然后,painter 模块将在 EventArgs 对象中设置“SelectedObject”属性,当发布完成并且我们返回搜索模块时,我们将在 EventArgs 对象中拥有该painter 的选定对象。
你怎么看?这样做的正确方法是什么?
【问题讨论】:
标签: communication module