Ars*_*nko 1 c# asp.net master-pages code-duplication multiple-inheritance
我已经阅读了解释C#中没有多重继承的问题/答案,我们甚至不需要它,并且它会导致太多问题.
现在,我正在开发一个项目,我不知道如何在没有多重继承的情况下执行操作,而无需重复代码.
这是情况.有一个主页和其他页面继承自主页(主页不继承)的网站.页面和母版页都在执行一些操作:自定义登录,统计,加载用户自定义设置等.目前,解决方案很糟糕,因为这些任务的源代码只是被复制了两次.
主页类继承自Page.另一方面,母版页继承自Masterpage.从逻辑上讲,从公共类继承也很棒,但它是多重继承,所以这是不可能的.
那又怎么办呢?
我想过几种方法,但不喜欢它们:
创建一个独立的类,它将从page/masterpage类中调用.所以,例如,而不是写作bool isDisplayingTips = this.CurrentUser.IsDisplayingTips,我会写bool isDisplayingTips = this.SharedObjects.CurrentUser.IsDisplayingTips.我不喜欢它,因为它写的时间更长.
创建一个"真实的"空的公共母版页,并从中继承主页和母版页.它不仅需要编写更多代码来访问母版页参数,而且还会减慢速度,每次请求都需要额外的母版页.
任何的想法?
MasterPage是一个公正的控件(嵌入到实际页面中),因此您不能使用后面的方法.但是,创建另一个辅助类的第一种方法是非常可行的.
我们通常使用的另一种方法是拥有
myBasePage = (BasePage)this.Page;.这样,母版页可以从基页类访问公共功能.