我想将模型视图Presenter模式用于包含将在其他项目中使用的用户控件的库。
根据MVP,我必须在用户控件上实现IView接口并将其传递给Presenter类。
在我看来,消费者不需要访问IView合同。 但由于IView接口是公共合同,这意味着用户控件的使用者也可以访问其方法\属性,并且我希望这些只能由Presenter访问。
实现这一目标的好方法是什么?
答案 0 :(得分:1)
我已经为我的情况找到了解决方案。
我将IView-interfaces内部化并在用户控件上显式实现它们。 这样,IView接口不是用户控件的公共接口的一部分,这是我需要的。
答案 1 :(得分:0)
我一直认为与视图绑定的用户控件本身并不是一个单独的视图。他们应该能够访问任何Presenter,他们所绑定的视图可以访问但不在自己的视图中。相反,它们是视图的一部分,如果UI改变,它们可以替换或改变而不用担心现在。
在您的具体示例中,我将让User控件不实现任何视图界面。相反,我只是让用户控件程序集引用Presenter程序集,并具有允许访问它所属的View对象的属性。