1

ASP.NET WebアプリケーションにメソッドInitを1つだけ含めることはできますか、Disposeそれとも、そのようなメソッドを関連付けたいクラスごとにこれらを実装できますか?

具体的には、Customerコンポーネントとクラスがあり、両方にメソッドを実装しCustomerRecordたいと思います。InitDispose

これを行うための適切な方法は何ですか?

要件:

前述のクラスごとに独立Initしたメソッドが必要です。Dispose

4

2 に答える 2

1

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()
    {

    }
}
于 2011-04-12T09:26:00.797 に答える
0

必要に応じて、InitメソッドとDisposeメソッドを使用して基本クラスを作成し、それから他のクラスを継承させることができます。例えば:

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

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

public class Customer : BaseClass
{
    //Some code
}

それはあなたを助けるかもしれません。

于 2011-04-12T09:02:35.970 に答える