Compartir a través de


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

Nombre de tipo

FinalizersShouldCallBaseClassFinalizer

Identificador de comprobación

CA2220

Categoría

Microsoft.Usage

Cambio problemático

No

Motivo

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

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 su método Finalize.

Cuándo suprimir advertencias

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

Ejemplo

El siguiente ejemplo de Visual Basic 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

Vea también

Referencia

Implementing Finalize and Dispose