コントローラーをIDisposable
に実装すると、Dispose
メソッドがまだGCによって呼び出されないと想定します。だから、私は追加する必要があります意味:コントローラとIDisposable
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected override void Dispose(bool disposing)
{
if (!isDalDisposed)
{
isDalDisposed = true;
if (disposing)
DAL.Dispose();
}
base.Dispose(disposing);
}
私はObject.Finalize
を使用して悪い習慣で、可能な限り避けるべきであることを読んだことがあります。
私の問題は、私の "サービス"がデフォルトのコンストラクタで作成され、using
ステートメントを使用して各サービスの有効期間を制御することができないということです。では、この問題を解決する正しい方法は何でしょうか?
ASP.NET MVCを使用していますか? –
あなたはどんなコントローラーについて話していますか? WebAPIでは、コントローラは要求ごとにインスタンス化されるため、明示的に処理する必要はありません。 –
ええ私はWeb APIのコントローラについて話しています。私は使い捨てのサービスをいくつか持っており、コンストラクタでそれらをインスタンス化します。完了したら処分する必要がありますが、私はそれが悪い習慣であると読んでいるので、ファイナライズアプローチを使用しない方法を見つけることを試みています。 – r3plica