Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVP:一个复杂表单(winforms)有多个视图/演示者?_C#_Winforms_Mvp - Fatal编程技术网

C# MVP:一个复杂表单(winforms)有多个视图/演示者?

C# MVP:一个复杂表单(winforms)有多个视图/演示者?,c#,winforms,mvp,C#,Winforms,Mvp,我正在为遗留应用程序中的复杂表单添加一些功能。它已经有了一个巨大的表单,有很多控件和选项卡,还有一个巨大的cs文件背后的代码。我试图避免创建一个巨大的视图/演示者。为表单的每个功能添加视图(和演示者)是否是一种好的做法?有没有更好的解决办法?由于用户的需求,我无法将表单拆分为多个表单 表单定义如下所示 public partial class frmMyForm : IView1, IView2, IView3, IView4, IView5, IView6, IView

我正在为遗留应用程序中的复杂表单添加一些功能。它已经有了一个巨大的表单,有很多控件和选项卡,还有一个巨大的cs文件背后的代码。我试图避免创建一个巨大的视图/演示者。为表单的每个功能添加视图(和演示者)是否是一种好的做法?有没有更好的解决办法?由于用户的需求,我无法将表单拆分为多个表单

表单定义如下所示

public partial class frmMyForm 
    : IView1, IView2, IView3, IView4, IView5, 
      IView6, IView7, IView8, IView9, IView10
{
    ....
每个
IViewN
都是不同的功能-例如,一个用于可视化数据更改比较,一个用于在网格中显示数据,一个用于汇总统计


为什么这篇文章被否决了?评论你的理由。
如果您不知道什么是MVP,请不要否决该问题。

如果我理解正确,您正在旧版应用程序和现有屏幕上工作。在这里,您需要添加一些新功能。如果是这种情况,那么添加时必须已经有可用于此屏幕的模型、演示者和视图。如果是这样的话,如果您的新功能使视图和演示者变得巨大,那么您没有其他选择,只能继续使用相同的体系结构evn

但是如果我错了,您自己实现了屏幕,那么您可以使用用户控件的模型、演示者和视图引入用户控件。但是要确保你的用户控件彼此独立,在用户控件之间建立一个沟通的桥梁将再次成为一个问题和困惑


但是老实说,我更愿意为这个任务创建一个演示者和视图,即使文件太大。通常,用户控件用于创建可在多个位置使用的通用控件。使用您的方法,如果您正在创建的用户控件之间存在大量通信,您可能会有点犹豫。但是,如果用户控件是用一个很好的计划创建的,那么这一点是可以缓解的。但对我来说,只有一个演示者和视图是首选,除非它们处于紧密耦合的情况。当你有像resharper这样的插件帮助时,大文件应该不是问题。

如果我理解正确,你是在一个遗留应用程序和现有屏幕上工作。在这里,您需要添加一些新功能。如果是这种情况,那么添加时必须已经有可用于此屏幕的模型、演示者和视图。如果是这样的话,如果您的新功能使视图和演示者变得巨大,那么您没有其他选择,只能继续使用相同的体系结构evn

但是如果我错了,您自己实现了屏幕,那么您可以使用用户控件的模型、演示者和视图引入用户控件。但是要确保你的用户控件彼此独立,在用户控件之间建立一个沟通的桥梁将再次成为一个问题和困惑


但是老实说,我更愿意为这个任务创建一个演示者和视图,即使文件太大。通常,用户控件用于创建可在多个位置使用的通用控件。使用您的方法,如果您正在创建的用户控件之间存在大量通信,您可能会有点犹豫。但是,如果用户控件是用一个很好的计划创建的,那么这一点是可以缓解的。但对我来说,只有一个演示者和视图是首选,除非它们处于紧密耦合的情况。当你有像resharper这样的插件帮助时,大文件应该不是问题。

没有任何东西表明表单、视图和演示者之间存在一对一的关系。事实上,将表单的各个部分分解为多个“视图”(我经常在用户控件中看到这一点;但不一定是这样),并且每个视图都有一个演示者,这是完全合理的。最常见的是形式就是视图;但是,这不是强制性的


正如您所说,这意味着避免使用一些可怕的“全看\全做”演示器,这将导致代码更加内聚,并减少单元测试的麻烦。

没有任何东西表明表单、视图和演示器之间存在一对一的关系。事实上,将表单的各个部分分解为多个“视图”(我经常在用户控件中看到这一点;但不一定是这样),并且每个视图都有一个演示者,这是完全合理的。最常见的是形式就是视图;但是,这不是强制性的


正如您所说,这意味着要避免一些可怕的“全看\全做”演示者,这将导致更具内聚性的代码并减少单元测试的麻烦。

我投了反对票,因为我不确定您在问什么。你能举一个分组和标签的例子吗?是否正在使用用户控件?您是否使用了一个特定的MVP框架?@MrKWatkins这是一个巨大的复杂表单,我正试图避免创建一个巨大的视图/演示者,正如问题的标题所描述的那样。您能将其拆分为每个视图/演示者的用户控件吗?我不能。更改旧应用程序的布局并不容易,新功能可能需要在表单的不同位置放置多个控件(例如,在顶部添加一个组合框,并在网格的单元格中显示一些工具提示,将它们放置在用户控件中似乎不可行)。基本上,我只是希望新增加的功能在更好的架构中。我不认为这个问题有任何问题。我应该用一个例子解释一下。我投了反对票,因为我不知道你在问什么。你能举一个分组和标签的例子吗?是否正在使用用户控件?您是否使用了一个特定的MVP框架?@MrKWatkins这是一个巨大的复杂表单,我正试图避免创建一个巨大的视图/演示者,正如问题的标题所描述的那样。您能将其拆分为每个视图/演示者的用户控件吗?我不能。要更改遗留应用程序的布局并不容易