2

新しいプロジェクトの VS2005 コード分析規則を遵守しようとしています。私はこの方法を持っています:

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

(コンソール呼び出しは、ある時点で log4net 呼び出しになり、いくつかの型の破棄をログに記録することに常に関心があります)。

コンソール デバッグ行が存在すると、次のエラーが発生します。

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

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

4

1 に答える 1

3

ガイドライン内に保つために、ログ ステートメントを Dispose(bool disposing) メソッド内に配置できます。

public void Dispose(bool disposing)
{
  if (disposing)
  {
     Console.WriteLine("...");
  }
  ...
}
于 2008-12-04T14:31:40.137 に答える