开发者

MVP - User Controls - Hiding the IView interface from consumers?

开发者 https://www.devze.com 2022-12-08 06:34 出处:网络
I would like to use Model View Presenter pattern for a library containing user controls which will be used in other projects.

I would like to use Model View Presenter pattern for a library containing user controls which will be used in other projects.

According to MVP I have to implement an IView-interface on a user control and pass it on to a Presenter-class.

In my case the consumers don't need access to the IView-contract. But because the IView-interface is a public contract it means that consumers of the user control can also access its methods\properties and I want these to be only accessible for the Presenter.

W开发者_运维问答hat is a good way to accomplish this?


I've found a solution for my situation.

I make my IView-interfaces internal and implement them explicitly on the user controls. This way the IView-interfaces is not part of the public interface of a user control which is what I need in my case.


I always consider User Controls tied to the Views not be a separate view themselves. They should be able to access any Presenter that the view they are tied can access but are not in themselves views. Rather they are part of a view and can be replace or altered without concern to the present if the UI changes.

In your specific example I would have the User control not implement any view interface. Instead I would just have the User Control Assembly reference the Presenter Assembly and have properties to allow access to the View Object that it is a part of.

0

精彩评论

暂无评论...
验证码 换一张
取 消