Visual studio Visual Studio代码分析处理实现警告

Visual studio Visual Studio代码分析处理实现警告,visual-studio,code-analysis,Visual Studio,Code Analysis,我有以下代码: /// <summary> /// Dispose. /// </summary> public override sealed void Dispose() { Dispose(true); GC.SuppressFinalize(this); } /// <summary> /// Dispose. /// </summary> /// <param name="disposing"> /// Di

我有以下代码:

/// <summary>
/// Dispose.
/// </summary>
public override sealed void Dispose()
{
    Dispose(true);
    GC.SuppressFinalize(this);
}

/// <summary>
/// Dispose.
/// </summary>
/// <param name="disposing">
/// Disposing parameter.
/// </param>
protected override void Dispose(bool disposing)
{
    if (disposing)
    {
    }
     Clear();
     base.Dispose(disposing);
}
//
///处置。
/// 
public override sealed void Dispose()
{
处置(真实);
总干事(本);
}
/// 
///处置。
/// 
/// 
///配置参数。
/// 
受保护的覆盖无效处置(布尔处置)
{
如果(处置)
{
}
清除();
基地。处置(处置);
}
并发出以下警告:

警告435 CA2215:Microsoft。用法:确保方法“DSDump.Dispose()”在所有可能的控制流路径中调用base.DSDump.Dispose()。
警告436 CA1063:Microsoft.Design:删除“DSDump.Dispose()”,重写Dispose(bool disposing),并将Dispose逻辑置于“disposing”为true的代码路径中


我不知道为什么。。。从我的角度来看,一切正常。

问题在于基类的定义不正确


public void Dispose()
不应是基类中的虚拟方法。它应该处理GC抑制并调用virtual
protected virtual void Dispose(bool)
方法,这是您应该覆盖的方法。

+1,Microsoft确实有示例代码来显示推荐的方法,@LexLi注意,MS指南和示例代码仅显示如何实现基类,而不是派生类。为此,请参见: