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