2009-09-23 81 views
0

我有兩個類,我的頁面和控件繼承。這兩個類獲得相同的基本信息集,但按其原樣執行兩次。有沒有辦法從一個基類繼承?ASP.NET會話繼承

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

回答

1

看看這個stackoverflow post哪個對待你的問題。

// Loads the session information from the database 
// stores in member vars for the page to use 

可以實現爲一個擴展方法,這將允許您重用邏輯之內的兩次,頁面和用戶控件。

0

C#不允許多重繼承,並且您需要從Page或UserControl繼承。所以,不,沒有辦法從同一個基類繼承。

您應該將加載和初始化邏輯放在它自己的類中;那麼你可以在OnInit方法中實例化這個類的一個實例。這樣你就可以避免重複的代碼。

0

您可以將邏輯放在一個類中,然後讓Page和UserControl自定義類擴展一個通用接口。

你仍然需要像你一樣子類Page和UserControl,但至少邏輯不會被重複,只有重載的方法和調用公共邏輯類。不過,由於代碼共享的原因,這仍然有所改進。