52

IDisposableを実装するとき、オブジェクトが破棄された後に呼び出されるべきではないすべてのメソッドがをスローする必要があることを理解していますObjectDisposedException。しかし、例外のコンストラクターに渡される必要があるnameオブジェクトの標準は何ですか?

4

3 に答える 3

52

推奨される方法は、次のものを投げることだと思います。

throw new ObjectDisposedException(GetType().FullName);

または、チェックを含めて、それを必要とする各メソッドの上部にある次の2行のコード(明らかにDisposeメソッド自体ではありません):

if (this.disposed)
    throw new ObjectDisposedException(GetType().FullName);

これを使いやすさのための小さな方法にリファクタリングするのに役立つかもしれません。

于 2009-12-26T22:25:58.983 に答える
14

.NET Framework自体でさえ、ここではあまり一貫性がありません。

David M. Kean(MicrosoftのFxCopチームの元開発者)は、ObjectDisposedExceptionのMSDNドキュメントにコメントを追加しました。

このタイプの一般的な使用法は次のようなものです。

[C#]
private void CheckDisposed()
{
    throw new ObjectDisposedException(GetType().FullName);
}
于 2009-12-26T22:26:57.673 に答える
1

そのための標準があるとは思いません。オブジェクトのタイプと、一意の識別フィールド(ある種の「主キー」)の文字列コンテンツを返します。

于 2009-12-26T22:12:23.087 に答える