【问题标题】:Communication between modules模块之间的通信
【发布时间】:2009-01-14 18:58:04
【问题描述】:

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

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

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

当我在画家中打开一个对象时,它会添加到画家中已经存在的对象中,我可以移动它并更改它。

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

搜索模块的一个功能要求它在painter 中获取选定对象(如果painter 可用),我不确定最好的方法是什么...

我想到了这些解决方案:

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

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

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

【问题讨论】:

    标签: communication module


    【解决方案1】:

    我会说,选项 A。这听起来很正常场景,也许我没有完全理解它作为一个整体。 :)

    【讨论】:

      【解决方案2】:

      我会说,选项 B。这听起来很常见,也许我没有完全理解它的整体。 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-07
        • 1970-01-01
        • 2016-05-05
        • 1970-01-01
        • 2016-12-31
        • 1970-01-01
        相关资源
        最近更新 更多