C# WinForms中的MVP(presenter&;program.cs)
我正在学习MVP模式,并有以下问题: 如果我有一个表单(projectmainform)、一个模型(projectmodel)和一个演示者,我应该为我的演示者创建一个新项目,还是可以将它放在mainformproject中 1) 如果演示者必须位于单独的项目中,则显然需要对其构造函数的MainForm进行引用,这导致了第二个问题: 当应用程序在program.cs(MainForm)中启动时,我需要创建演示者:C# WinForms中的MVP(presenter&;program.cs),c#,winforms,mvp,C#,Winforms,Mvp,我正在学习MVP模式,并有以下问题: 如果我有一个表单(projectmainform)、一个模型(projectmodel)和一个演示者,我应该为我的演示者创建一个新项目,还是可以将它放在mainformproject中 1) 如果演示者必须位于单独的项目中,则显然需要对其构造函数的MainForm进行引用,这导致了第二个问题: 当应用程序在program.cs(MainForm)中启动时,我需要创建演示者: static void Main() { Applicati
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Presenter presenter = new Presenter(new MainForm()); //Here it is
Presenter.Run();
}
但是,由于演示者是在一个单独的项目中,我不能在没有参考的情况下使用它。但是,已经有一个从presenter到MainForm的引用,所以我无法添加它
2) 如果presenter位于MainForm项目中,则程序可以正常启动,但要使用模型中的函数,我必须将MainForm项目中的引用添加到模型项目中,我认为这与MVP模式相矛盾
请告诉我如何正确设计我的解决方案。您的视图和模型应该相互独立,并且与演示者无关。他们可能生活在自己的项目中,但在一个简单的程序中,所有的东西都在同一个项目中是可以的 如果您确实希望将它们放在单独的项目中,那么这很容易做到。包含
程序
类的主项目也将包含演示者
类。视图(即MainForm
类)和模型将(可能)位于各自的项目中
项目的层次结构如下所示:
- 主程序EXE项目:包含
类和Presenter
类(即后者用于程序入口点,program
,如代码示例所示)。参考资料包括:Main()
- 视图DLL项目:包含
class(和任何其他视图类)MainForm
- 模型DLL项目:包含模型类
- 视图DLL项目:包含
Form1
。您可以为视图DLL项目创建类库项目,并为您的MainForm
类将Windows窗体类添加到该项目中