VS2005コード分析:CA1063(dispose(true)を呼び出してファイナライズを抑制する)-ロギングあり
-
19-08-2019 - |
質問
新しいプロジェクトの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("...");
}
...
}
所属していません StackOverflow