ASP.NET会话继承

时间:2009-09-23 18:17:00

标签: c# asp.net inheritance

我的页面和控件都有两个继承的类。这两个类获得相同的基本信息集,但是代码实现了两次。有没有办法从一个基类继承?

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
    }
}

3 个答案:

答案 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,但至少逻辑不会重复,只有重载的方法和对公共逻辑类的调用。不过,出于代码共享的原因,这仍然是一项改进。