ASP.NET web應用程序只能有一個Init
和一個Dispose
方法,或者我可以爲每個類實現這些方法嗎?ASP.NET:實現初始化和處理方法
更具體地說我有Customer
組件和CustomerRecord
類和想實現在兩者Init
和Dispose
方法。
這樣做的正確方法是什麼?
要求:
我希望能有獨立Init
和Dispose
方法對每個上述類。
ASP.NET web應用程序只能有一個Init
和一個Dispose
方法,或者我可以爲每個類實現這些方法嗎?ASP.NET:實現初始化和處理方法
更具體地說我有Customer
組件和CustomerRecord
類和想實現在兩者Init
和Dispose
方法。
這樣做的正確方法是什麼?
要求:
我希望能有獨立Init
和Dispose
方法對每個上述類。
對於那些應該是一次性的類,通過公開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?
如果是這樣,那麼看看上面例子中的析構函數;構造函數(或初始化器)可以以同樣的方式減去波浪線,一般來說,加上明確的訪問修飾符(public
,private
,等等)來定義,例如:
public class Customer
{
public Customer()
{
}
}
您可以根據需要使用Init和Dispose方法創建基類,然後使其他類從其繼承。例如:
public class BaseClass
{
public void Init()
{
//Some code
}
public void Dispose()
{
//Some code
}
}
public class Customer : BaseClass
{
//Some code
}
這可能對您有所幫助。
我希望能有獨立的init和爲問題 – 2011-04-12 09:03:36
中提到的每個類處理方法您的一次性類必須實現'IDisposable'。而且,打算被覆蓋或擴展的方法應該用'virtual'修飾符適當標記。 – 2011-04-12 09:05:19
@Mr。失望是的!我忘了! – 2011-04-12 09:06:14