Share via


CA2220: Los finalizadores deben llamar al finalizador de la clase base

Elemento Valor
RuleId CA2220
Category Microsoft.Usage
Cambio importante Poco problemático

Causa

Un tipo que invalida System.Object.Finalize no llama al método Finalize en su clase base.

Nota

Esta regla está en desuso. Para más información, consulte Reglas en desuso.

Descripción de la regla

La finalización se debe difundir a través de la jerarquía de herencia. Para garantizar esto, los tipos deben llamar al método Finalize de su clase base desde su propio método Finalize. El compilador de C# agrega automáticamente la llamada al finalizador de clase base.

Cómo corregir infracciones

Para corregir una infracción de esta regla, llame al método Finalize del tipo base desde el método Finalize.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla. Algunos compiladores que tienen como destino Common Language Runtime insertan una llamada al finalizador del tipo base en el lenguaje intermedio de Microsoft (MSIL). Si se notifica una advertencia de esta regla, el compilador no inserta la llamada y debe agregarla al código.

Ejemplo

En el siguiente ejemplo de Visual Basic se muestra un tipo TypeB que llama correctamente al método Finalize en su clase 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 también