2011-04-12 33 views
1

ASP.NET web應用程序只能有一個Init和一個Dispose方法,或者我可以爲每個類實現這些方法嗎?ASP.NET:實現初始化和處理方法

更具體地說我有Customer組件和CustomerRecord類和想實現在兩者InitDispose方法。

這樣做的正確方法是什麼?

要求:

我希望能有獨立InitDispose方法對每個上述類。

回答

1

對於那些應該是一次性的類,通過公開Dispose方法,接口必須實現「可處置性」,以便在明確的用戶處置範圍內有效。這已經涵蓋了許多次在許多地方,including here,例如:

public class Customer : IDisposable 
{ 
    public void Dispose() 
    { 
     Dispose(true); 
     GC.SupressFinalize(this); 
    } 

    protected virtual void Dispose(bool disposing) 
    { 
     if (disposing) 
     { 
      //dispose of managed resources 
     } 
     //dispose of unmanaged resources 
    } 

    ~Customer() 
    { 
     Dispose(false); 
    } 
} 

注意,析構函數(方法開始與波浪~)可能不是必要的,但閱讀我上面鏈接答案細節爲清晰起見什麼爲什麼 - 這只是直接回答你的問題。

至於Init方法,你指的是constructor

如果是這樣,那麼看看上面例子中的析構函數;構造函數(或初始化器)可以以同樣的方式減去波浪線,一般來說,加上明確的訪問修飾符(publicprivate,等等)來定義,例如:

public class Customer 
{ 
    public Customer() 
    { 

    } 
} 
0

您可以根據需要使用Init和Dispose方法創建基類,然後使其他類從其繼承。例如:

public class BaseClass 
{ 
    public void Init() 
    { 
     //Some code 
    } 

    public void Dispose() 
    { 
     //Some code 
    } 
} 

public class Customer : BaseClass 
{ 
    //Some code 
} 

這可能對您有所幫助。

+0

我希望能有獨立的init和爲問題 – 2011-04-12 09:03:36

+0

中提到的每個類處理方法您的一次性類必須實現'IDisposable'。而且,打算被覆蓋或擴展的方法應該用'virtual'修飾符適當標記。 – 2011-04-12 09:05:19

+0

@Mr。失望是的!我忘了! – 2011-04-12 09:06:14