我的页面和控件都有两个继承的类。这两个类获得相同的基本信息集,但是代码实现了两次。有没有办法从一个基类继承?
public partial class SessionPage : System.Web.UI.Page
{
protected override void OnInit(EventArgs e)
{
// Loads the session information from the database
// stores in member vars for the page to use
}
}
public partial class SessionControl : System.Web.UI.UserControl
{
protected override void OnInit(EventArgs e)
{
// Loads the session information from the database
// stores in member vars for the user control to use
}
}
答案 0 :(得分:1)
看看这个以某种方式对待你的问题的stackoverflow post。
您
// Loads the session information from the database
// stores in member vars for the page to use
可以作为扩展方法实现,允许您在页面和用户控件中重用逻辑。
答案 1 :(得分:0)
C#不允许多重继承,您需要从Page或UserControl继承。所以,不,没有办法从同一个基类继承。
您应该将加载和初始化逻辑放在它自己的类中;然后你可以在OnInit方法中实例化这个类的实例。这样就可以避免重复代码。
答案 2 :(得分:0)
您可以将逻辑放在一个类中,然后让Page和UserControl自定义类扩展一个公共接口。
你仍然需要像你一样使用子类Page和UserControl,但至少逻辑不会重复,只有重载的方法和对公共逻辑类的调用。不过,出于代码共享的原因,这仍然是一项改进。