我读过questions/answers解释说,C#中没有多重继承,我们甚至不需要它,并且它会引起太多问题。
现在,我正在一个项目中工作,在这个项目中,我不太了解如何在没有多重继承的情况下完成工作,又没有重复的代码。
这是情况。有一个网站带有主页,而其他页面是从母版页继承的(该主页不继承)。该页面和主页都执行一些操作:自定义登录,统计信息,用于自定义的用户设置加载等。目前,该解决方案非常糟糕,因为这些任务的源代码仅被复制了两次。
主页类从Page
继承。另一方面,母版页是从Masterpage
继承的。从逻辑上讲,也可以从一个通用的类继承,但是它是多重继承,所以这是不可能的。
那么该怎么做呢?
我考虑了几种方法,但不喜欢它们:
创建一个独立的类,该类将从页面/母版页类中调用。因此,例如,我会写bool isDisplayingTips = this.CurrentUser.IsDisplayingTips
而不是写bool isDisplayingTips = this.SharedObjects.CurrentUser.IsDisplayingTips
。我不喜欢它,因为它写的时间更长。
创建一个“真实的”,空的,通用的母版页,并从其继承首页和母版页。它不仅需要编写更多的代码来访问母版页参数,而且还会降低速度,在每个请求上都需要一个额外的母版页。
任何的想法?
最佳答案
MasterPage是一个公正的控件(已嵌入到实际页面中),因此您无法采用后一种方法。但是,创建另一个助手类的第一种方法是完全可行的。
我们通常使用的另一种方法是
通用基础页面类-所有页面都将从通用基础页面继承。
将通用功能放在基本页面类中
在母版页中,可以通过强制转换来引用基本页-例如,myBasePage = (BasePage)this.Page;
。这样,母版页可以访问基类中的常用功能。
关于c# - 如何在页面和母版页之间共享代码而无需多重继承/代码重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3699827/