我正在尝试使用 MVP 模式创建一种主/详细 UI。我有通常的嫌疑人:
interface IMainView{}
class MainView: Form, IMainView{}
interface IMainPresenter{}
class MainPresenter{}
// Numerous domain objects
我还有一个 UserControl,它也是它自己的 MVP 三元组的视图:
interface ISubView{}
class SubView: UserControl, ISubView{}
interface ISubPresenter{}
class SubPresenter{}
MainPresenter 创建了 SubPresenter 的实例,而 SubPresenter 又创建了 SubView 的实例。我的问题是视图不包含对彼此的引用,甚至不知道彼此存在。他们只知道他们自己的演示者,但我想将一个用户控件视图附加到另一个表单视图。这是否可以做到并且仍然保持每个视图对彼此的无知?
到目前为止,所有视图都将每个演示者所需的属性公开为系统类型,因此如果 ListBox 更改为 ComboBox 或 RadioGroup,则演示者不会受到影响。如果可能的话,我想保持这种方式,但如果我别无选择,我愿意打破这种模式。
我这样做的原因是 MainView 向用户展示了一组对象。每个对象可以是几个(超过 50 个)不同的类之一。所有人都将实现一个通用接口,但用于操作每个对象的 UI 将随底层类的不同而不同。
顺便说一句,这是一个针对 .NET 2.0 的 Winforms 应用程序(尽管它被编译为 C# 3.0)