using()ステートメントでリポジトリクラスを呼び出すメソッドを作成したいと思います。そのクラスは現在、使い捨てではありません。 IDisposableを実装する前に考慮すべきことはありますか?IDisposableを実装する際に考慮するリスクはありますか?
すなわち
using(var repo = new RespositoryClass())
{
//do work
}
using()ステートメントでリポジトリクラスを呼び出すメソッドを作成したいと思います。そのクラスは現在、使い捨てではありません。 IDisposableを実装する前に考慮すべきことはありますか?IDisposableを実装する際に考慮するリスクはありますか?
すなわち
using(var repo = new RespositoryClass())
{
//do work
}
あなたはクラス内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.
}
クラスがリソースを処分するusing
文を入れて、本当にどこにもありません。使い捨てオブジェクトをフィールドに格納しているので、それを廃棄する責任があるので、処分されることを確実にする最良の方法はIDisposable
を実装することです。
リポジトリクラス_does_は、 'using'ステートメントで呼び出されるため、使い捨てにする必要があります – Ropstah
atbyrdは、Servyがこの回答を投稿した後に' using'を含むように質問を変更しました。 –
なぜIDisposableを実装する必要がありますか?使い捨てリソースを使用しているということは、 'IDisposable'を実装する必要はないということです。 – Servy
@Servy:答えとして投稿してください。それは正しいものです! –
あなたの質問はかなり広いようです。あなたが心配していることが分からない特定の原因は考えられませんが、あなたの開発に正しい光を当てる良い記事です。 http://www.codeproject.com/Articles/29534/IDisposable-What-Your-Mother-Never-Told-You-About – MilkyWayJoe