我试图在新项目中遵守 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/