using() ステートメントでリポジトリ クラスを呼び出すメソッドを作成したいと考えています。そのクラスは現在使い捨てではありません。IDisposable を実装する前に考慮すべきことはありますか?
すなわち
using(var repo = new RespositoryClass() )
{
//do work
}
IDisposable
クラスがアンマネージ リソースを使用する場合、またはそれを実装する他のメンバーを初期化する場合は、実装する必要があります。それ以外の場合は、必要がなければ使用しないでください。
クラス内でオブジェクトを使用するからといっIDisposable
て、クラスが IDisposable を実装する必要があるわけではありません。
以下のクラスの例では、 を実装する必要はありませんIDisposable
。
class NotDisposable
{
public void someMethod()
{
using(SomethingDisposable resource = new SomethingDisposable ())
{...}
}
}
を実装する必要があるクラスの例を次に示しますIDisposable
。
class SomethingToDispose : IDisposable
{
private SomethingDisposable resource = new SomethingDisposable();
public void someMethod()
{
//code that uses resource
}
//code to dispose of "resource" in a Dispose method.
}
この 2 番目の例でわかるように、クラスがusing
リソースを破棄するステートメントを配置する場所は実際にはありません。使い捨てオブジェクトをフィールドに格納していて、それを破棄する責任があるため、確実に破棄されるようにする最善の方法は、 を実装することIDisposable
です。