[英]Initialization code in a WinForms App - Program.cs or MainForm?
[英]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将(可以)位于它们自己的项目中。
项目的层次结构如下所示:
Presenter
类和Program
类(即,在代码示例中显示的用于程序入口点Main()
)。 参考资料包括:
MainForm
类(和任何其他View类) 换句话说,您可以为主程序项目创建一个Windows Forms项目,而只需删除为您创建的默认Form1
。 您可以为视图DLL项目创建一个类库项目,并为您的MainForm
类将Windows Form类添加到该项目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.