VS2005代码分析:CA1063(调用dispose(true)和supress finalize) - 带日志记录

时间:2008-12-04 14:22:10

标签: c# visual-studio-2005 code-analysis fxcop

我正在努力遵守新项目的VS2005代码分析规则。我有这个方法:

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

(控制台调用将在某些时候成为log4net调用,我们总是对我们的某些类型的日志记录感兴趣。)

控制台调试行的存在会触发此错误:

错误1 CA1063:Microsoft.Design:修改PerfectDisposableClass.Dispose():Void以便调用Dispose(true),然后在当前对象实例上调用GC.SuppressFinalize('this'或'Me'in VB),然后返回。 F:\ Visual Studio 2005 \ Projects \ DisposeAndFinalize \ DisposeAndFinalize \ PerfectDisposableClass.cs 26 DisposeAndFinalize

如果没有诉诸pragma指令,有没有办法解决这个问题?也许写自己的规则?另外,我可以用反射器看一下装配中的现有规则吗?

1 个答案:

答案 0 :(得分:3)

您可以将日志语句放在Dispose(bool disposing)方法中以遵守指南:

public void Dispose(bool disposing)
{
  if (disposing)
  {
     Console.WriteLine("...");
  }
  ...
}