我正在重构一个 WinForms (.NET 4) 应用程序,该应用程序使用 TabControl 来包含一个 UserControl——UserControl 在每个 TabPage 中实例化,最终结果是每个选项卡中的编辑器。这些正在编辑一组项目,这些项目最终会输入到整个表单正在编辑的对象中。
作为示例类结构:
class School
string Name
string Address
- s 的集合
Course
,每个都有几个适当的字段(Department
、Name
等)
(它实际上不是与学校相关的应用程序,但比喻有效。)
在视觉上,UserControls 集合管理Course
es,而父 Form 处理School
信息。
现在,我有一个 Form/School 的演示者和一个 UserControl/Course 的演示者,每个都有一个视图。然而,学校的演示者需要控制课程的一些信息。例如,为一门课程选择的选项会限制其他课程的选项。该School
模型正在处理该计算,但它需要到达课程的演示者。
我在 MVP 讨论中找到这种类型关系的例子并没有取得多大成功,这是我第一次采用 MVP 方法。处理这个问题有什么好的选择?学校的演示者是否适合拥有课程演示者的集合来代表该集合?学校的观点应该持有课程观点的集合吗?(最终的 UserControls 最终必须以某种方式和某处附加到表单,对吗?)
我的主要目标是(毫不奇怪)提高可测试性和可维护性,到目前为止,该过程的主要来源是 Michael Feathers 的“The Humble Dialog Box”和 Jeremy Miller 的“Build You Own CAB”系列。