VS2005コード分析:CA1063(dispose(true)を呼び出してファイナライズを抑制する)-ロギングあり

StackOverflow https://stackoverflow.com/questions/340745

質問

新しいプロジェクトのVS2005コード分析ルールを順守しようとしています。この方法があります:

public void Dispose()
{
    Console.WriteLine("Dispose() called");
    Dispose( true );
    GC.SuppressFinalize(this);
}

(コンソールコールは、ある時点でlog4netコールになります。私たちは常に、一部のタイプのログの破棄に関心を持っています)。

コンソールデバッグ行の存在がこのエラーをトリガーします:

エラー1 CA1063:Microsoft.Design:PerfectDisposableClass.Dispose():Voidを変更してDispose(true)を呼び出し、次に現在のオブジェクトインスタンス(「this」または「Me」でGC。 VB)、そして戻ります。 F:\ Visual Studio 2005 \ Projects \ DisposeAndFinalize \ DisposeAndFinalize \ PerfectDisposableClass.cs 26 DisposeAndFinalize

プラグマディレクティブに頼らずに、これを回避する方法はありますか?おそらく自分のルールを書いているのでしょうか?また、リフレクターで見ることができるアセンブリの既存のルールを参照してください。

役に立ちましたか?

解決

ログステートメントをDispose(bool disposing)メソッド内に配置して、ガイドラインを守ることができます。

public void Dispose(bool disposing)
{
  if (disposing)
  {
     Console.WriteLine("...");
  }
  ...
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top