Die*_*kes 5 asp.net oop events encapsulation
我正在浏览一篇关于asp.net中事件冒泡的文章,并且知道虽然可以从包含页面订阅用户控件按钮的click事件,但"这样做会破坏一些面向对象的规则封装".更好的想法是在用户控件中发布一个事件,以允许任何感兴趣的各方处理该事件.
我的问题是,如何从包含页面直接订阅按钮的click事件会破坏面向对象的封装规则?
如果它是一个愚蠢的问题,请道歉.:|
谢谢!
Button 应该由 UserControl 封装。
如果页面直接绑定到按钮上的事件,则页面现在依赖于UserControl 的内部工作。
页面应该使用 UserControl,而不是 UserControl 的按钮。如果 UserControl 的作者稍后想要删除该按钮并使用一些奇特的新方法来触发其“提交”事件,则您的页面可能会被破坏,因为该按钮可能不再存在。
就此而言,如果 UserControl 的所有者决定在 v1.1 中将按钮从 btnSubmit 重命名为 SubmissionButton,它也可能会破坏您的页面。
最好使用 UserControl 并让它关注自己的内部运作。