MVP从多个演示者接收状态?

时间:2016-05-21 16:09:06

标签: c# mvp

此问题建立在之前提出的问题之上:MVP Communication between presenters?

我正在实施上一篇文章中概述的模式。但是,在尝试根据Presenter A中的某些事件从Presenter B检索状态时,我遇到了一个问题。

例如,Presenter A响应视图事件SaveButtonClicked。

演示者A需要从Presenter B的视图中获取某些状态,即视图B.

到目前为止,我所尝试的是:

class PresenterA
{
    void PresenterA()
    {
        EventHub.Register(EventType.SendStateToPresenterA, HandleSendStateToPresenterA);
    }
   void HandleSaveClick(int productId)
   {
      EventHub.Publish(EventType.GetStateFromPresenterB, productId);
   }

   void HandleSendStateToPresenterA(string state)
   {
       // save to db
   }
}

class PresenterB
{
    void PresenterB
    {
       EventHub.Register(EventType.GetStateFromPresenterB, HandleGetStateFromPresenterB);
    }

    public void HandleProductChanged(int state)
    {
       EventHub.Publish(EventType.SendStateToPresenterA, "I am state!");
    }
}

这种方法的问题在于,如果我有两个以上的演示者,那就太复杂了。

有哪些方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

我发现情况并不能为演示者B提供单独的视图/演示者。它属于View A / Presenter A.