ASP.NET WebアプリケーションにメソッドInit
を1つだけ含めることはできますか、Dispose
それとも、そのようなメソッドを関連付けたいクラスごとにこれらを実装できますか?
具体的には、Customer
コンポーネントとクラスがあり、両方にメソッドを実装しCustomerRecord
たいと思います。Init
Dispose
これを行うための適切な方法は何ですか?
要件:
前述のクラスごとに独立Init
したメソッドが必要です。Dispose
ASP.NET WebアプリケーションにメソッドInit
を1つだけ含めることはできますか、Dispose
それとも、そのようなメソッドを関連付けたいクラスごとにこれらを実装できますか?
具体的には、Customer
コンポーネントとクラスがあり、両方にメソッドを実装しCustomerRecord
たいと思います。Init
Dispose
これを行うための適切な方法は何ですか?
要件:
前述のクラスごとに独立Init
したメソッドが必要です。Dispose
Dispose
ディスポーザブルである必要があるクラスの場合、パブリックメソッドを公開することによりIDispsable
、明示的なユーザーディスポーザルの範囲外で「ディスポーザビリティ」を有効にするためのインターフェイスを実装する必要があります。これは、ここを含む多くの場所で何度も取り上げられています。たとえば、次のようになります。
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
メソッドに関しては、コンストラクターを参照していますか?
その場合は、上記の例のデストラクタを見てください。コンストラクター(または初期化子)は、チルダを除いた同じ方法で定義でき、一般に、明示的なアクセス修飾子(、、など)を加えて次のように定義でき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
}
それはあなたを助けるかもしれません。