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