繁体   English   中英

WinForms中的MVP(presenter和program.cs)

[英]MVP in WinForms ( presenter & program.cs)

我正在学习MVP模式,并且遇到以下问题:

如果我有一个表单(项目MainForm),一个模型(项目Model)和一个演示者,我应该为演示者创建一个新项目还是可以将其放入MainForm项目中?

1)如果演示者必须位于单独的项目中,则它的构造函数显然需要引用MainForm,这导致我们遇到第二个问题:

当应用程序在program.cs(位于MainForm中)中启动时,我需要创建演示者:

static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Presenter presenter = new Presenter(new MainForm()); //Here it is
        Presenter.Run();
    }

但是,由于主持人在一个单独的项目中,因此如果没有参考,我将无法使用它。 但是,已经有来自演示者对MainForm的引用,所以我无法添加它。

2)如果presenter位于MainForm项目中,则程序可以正常启动,但是要使用Model I的功能,必须将MainForm项目中的引用添加到Model项目中,我认为这与MVP模式相矛盾。

请告诉我如何正确设计洗液。

您的视图和模型应该彼此独立并且与演示者无关。 他们可能生活在自己的项目中,但是在一个简单的程序中将所有东西都放在同一个项目中就可以了。

如果您确实希望将它们放在单独的项目中,则很容易做到。 包含Program类的主项目也将包含Presenter类。 然后,View(即MainForm类)和Model将(可以)位于它们自己的项目中。

项目的层次结构如下所示:

  • 主程序EXE项目:包含Presenter类和Program类(即,在代码示例中显示的用于程序入口点Main() )。 参考资料包括:
    • View DLL项目:包含MainForm类(和任何其他View类)
    • 模型DLL项目:包含模型类

换句话说,您可以为主程序项目创建一个Windows Forms项目,而只需删除为您创建的默认Form1 您可以为视图DLL项目创建一个类库项目,并为您的MainForm类将Windows Form类添加到该项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM