Compartilhar via


CA2220: Os finalizadores devem chamar o finalizador da classe base

TypeName

FinalizersShouldCallBaseClassFinalizer

CheckId

CA2220

<strong>Categoria</strong>

Microsoft.Usage

Alteração significativa

Não separável

Causa

Um tipo que substitui o Object.Finalize não chama o Finalize método na sua classe base.

Descrição da regra

Finalização deve ser propagada por meio da hierarquia de herança.Para garantir isso, tipos devem chamar sua classe base Finalize método de dentro do seu próprio Finalize método.O compilador C# adiciona automaticamente a chamada para o finalizador da classe base.

Como corrigir violações

Para corrigir uma violação desta regra, ligue para o tipo base Finalize método a partir do seu Finalize método.

Quando suprimir avisos

Não suprimir um aviso da regra.Alguns compiladores que visam common language runtime inserir uma chamada para o finalizador do tipo base em Microsoft intermediate language (MSIL).Se um aviso de que essa regra é reportado, o compilador não insere a chamada e você deve adicioná-lo ao seu código.

Exemplo

O exemplo de Visual Basic a seguir mostra um tipo de TypeB que chama corretamente o Finalize método na sua classe base.

Imports System

Namespace UsageLibrary

  Public Class TypeB
      Inherits TypeA

      Protected Overrides Sub Finalize()
          Try
              Dispose(False)
          Finally
              MyBase.Finalize()
          End Try
      End Sub

  End Class

End Namespace

Consulte também

Referência

Implementing Finalize and Dispose