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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de