0

ロガーのフィールドを含むIDisposableがあります。

class DoesNotDisposeMember : IDisposable {
  public IDisposable Logger { get; set; }

  public void Dispose ()
  {
    logger = null;
  }
}

Gendarmeは、 DisposableFieldsShouldBeDisposedRule-Defectがあると報告していますが、ロガーを破棄したくありません。

誰か助けてもらえますか?

4

1 に答える 1

2

あなたがそれを処分したくない理由を設定します。廃棄したくない場合は、おそらくIDisposableメンバーに保存するべきではありません。そのインターフェースの唯一の本当の目的は、廃棄されるアイテムを示す/有効にすることです。

ロギングオブジェクトの場合、またはから派生したものなど、使用できる別の共通ベースインターフェイス/クラスはありませんStreamStreamWriter

私がそれを書いたので、もちろん、これがまだIDisposable階層に含まれていることに気づきます...これは私が取っておいたと言ったことに私たちを戻すと思います:

廃棄するつもりのない変数をここに設定するのはなぜですか?他の場所で廃棄する場合は、おそらくそこでも使用する必要があります。ロガーオブジェクトをラップしているコードは、ロギングを可能にするモデル/ビジネスオブジェクトへの個別のインターフェースの公開を含む、ロガーオブジェクトのすべての機能を処理する必要があります。

基本的に、ロギングを別のオブジェクトにカプセル化する場合は、そのオブジェクトの外部にある内部ロギングストリームオブジェクトを参照しないでください。他の場所でロギングをカプセル化していない場合、このクラスはそれを適切に処理する必要があります。

于 2010-12-27T12:44:37.753 に答える