c#如何在一对多的形式中使用视图呈现器模式

本文关键字:视图 模式 一对多 | 更新日期: 2023-09-27 18:01:18

我正在努力实现模型-视图-呈现者模式。我使用这个模式的方法如下:

  • 我为表单创建了一个视图(= interface)
  • 我在构造函数
  • 中为接受视图作为参数的表单创建了一个演示器
  • 窗体实现了视图并创建了一个演示者对象。

现在我有一个可以注册公司的表格。但是他们可以有多个联系人。因此,在这个表单中,我有一个联系人的网格。

我的问题是,是否应该将联系人字段添加到与其他公司字段相同的视图中?或者我应该在另一个视图中分离它,以便表单实现两个视图(iccompanyview和IContactPersonView)与两个演示器类?

c#如何在一对多的形式中使用视图呈现器模式

首先,不要让你的视图实例化presenter,你不会想要那样的。无论你使用什么风格的MVP(被动视图,监督控制器),你的视图应该包含尽可能少的内容。我所做的是在演示器构造函数中有一个视图,并在演示器Initialize()方法中分配view.Presenter = this(您也可以在Start()或其他一些"show"方法中这样做,但由于演示器生命周期问题,我通常将初始化分离到另一个调用)

至于你的多视图问题,如果你在表单的那一部分有复杂的逻辑(但我在你的例子中没有看到它),你可能会在单独的用户控制/MVP triad中分离它-这有助于我减少和简化演示者的代码。

如果你只需要IContactPersonView/ICompanyView在其他地方而不是分割它们,那么就不要分割它们