模块之间的通信

时间:2009-01-14 18:58:04

标签: communication module

我的应用程序包含以下三个模块:

  • 搜索(搜索对象)
  • 列表(显示搜索结果)
  • 画家(允许我编辑对象) - 并不总是加载此模块

(每个对象都是我可以在画家中编辑的图形。)

当我在画家中打开一个物体时,它被添加到已经在画家中的物体中,我可以移动它并改变它。

我正在使用类似于EventAggregator的对象来在模块之间进行通信。例如,为了显示搜索结果,我发布了一个由List模块捕获的“ShowList”事件(我不确定这是执行此操作的最佳方式,如果有人有更好的想法请注释...)。< / p>

搜索模块的一个功能要求它在画家中获取所选对象(如果画家可用),并且我不确定这样做的最佳方法是什么......

我想到了这些解决方案:

  1. 每当画家中选定的对象发生变化时,它都会发布一个“PainterSelectedObjectChanged”事件,该事件将被搜索模块捕获并存储起来供以后使用。

  2. 当搜索模块需要所选对象时,它将发布一个“RequestingPainterSelectedObject”事件,该事件将由painter模块捕获。然后,painter模块将在EventArgs对象中设置“SelectedObject”属性,当发布完成并且我们回到搜索模块中时,我们将在EventArgs对象中使用画家选择的对象。

  3. 你怎么看?这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

我会说,选项A.这听起来像是非常通常的场景,也许我并没有完全理解它作为一个整体。 :)

答案 1 :(得分:0)

我会说,选项B.这听起来很平常,也许我并没有完全理解它。 :)