c# - VS2005代码分析: CA1063 (call dispose(true) and supress finalize) - with logging

标签 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),然后对当前对象实例(“this”或“Me”)调用 GC.SuppressFinalize VB),然后返回。 F:\Visual Studio 2005\Projects\DisposeAndFinalize\DisposeAndFinalize\PerfectDisposableClass.cs 26 DisposeAndFinalize

在不诉诸编译指令的情况下,有没有办法解决这个问题?也许编写我自己的规则?另外,我可以用反射器查看程序集中的现有规则吗?

最佳答案

您可以将日志语句放在 Dispose(bool dispose) 方法中以保持在准则范围内:

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

关于c# - VS2005代码分析: CA1063 (call dispose(true) and supress finalize) - with logging,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/340745/

相关文章:

c# - 获取上下文连接并将其用作其他地方的连接

c# - Json 反序列化错误。不支持的 : System. Guid 类型

.net - 如何制作 Visual Studio 宏以将调试器附加到 w3wp.exe 的所有实例?

c# - 使用链式构造函数避免代码分析 CA2000 警告?

c# - 使用 Json.net 将 JSON 数组中的多个项目添加到 C# 中的对象

c# - 我需要在 MySQL 中使用事务对象吗

c++ - 引用 link.exe 的奇怪 VC 链接器错误 LNK1107

vb.net - 如何将vb类添加到类库中?

Matlab:如何在使用给定函数的路径上查找函数

visual-studio-2013 - visual studio 2013 ultimate 中 CA1502 的自定义阈值