Compartilhar via


CA2220: os finalizadores devem chamar o finalizador da classe base

TypeName

FinalizersShouldCallBaseClassFinalizer

CheckId

CA2220

Categoria

Microsoft.Usage

Alteração Significativa

Sem Quebra

Causa

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

Descrição da Regra

O acabamento deveriam ser propagadas pela hierarquia de herança.Para assegurar isso, os tipos devem chamar o método de Finalize da classe base a partir de seu próprio método de Finalize .O compilador C# adiciona a chamada para o finalizador da classe base automaticamente.

Como Corrigir Violações

Para corrigir uma violação desta regra, chame o método de Finalize do tipo base do método de Finalize .

Quando Suprimir Alertas

Não elimine um alerta desta regra.Alguns compiladores que se destinam à inserção de Common Language Runtime uma chamada para finalizador de tipo base na linguagem intermediária da Microsoft (MSIL).Se um aviso dessa regra é relatado, seu compilador não insere a chamada, e você deverá adicioná-la ao seu código.

Exemplo

O exemplo do Visual Basic mostra um tipo TypeB corretamente que chama o método de Finalize em 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

Outros recursos

Implementing Finalize and Dispose