CA2220: I finalizzatori devono chiamare il finalizzatore della classe base
Articolo | Valore |
---|---|
ID regola | CA2220 |
Category | Microsoft.Usage |
Modifica | Nessuna interruzione |
Causa
Un tipo che esegue l'override System.Object.Finalize non chiama il Finalize metodo nella relativa classe di base.
Nota
Questa regola è stata deprecata. Per altre informazioni, vedere Regole deprecate.
Descrizione regola
La finalizzazione deve essere propagata tramite la gerarchia di ereditarietà. Per garantire questo problema, i tipi devono chiamare il metodo della classe Finalize di base dall'interno del proprio Finalize metodo. Il compilatore C# aggiunge automaticamente la chiamata al finalizzatore della classe di base.
Come correggere le violazioni
Per correggere una violazione di questa regola, chiamare il metodo del tipo di Finalize base dal Finalize metodo .
Quando eliminare gli avvisi
Non escludere un avviso da questa regola. Alcuni compilatori destinati a Common Language Runtime inseriscono una chiamata al finalizzatore del tipo di base nel linguaggio MSIL (Microsoft Intermediate Language). Se viene segnalato un avviso da questa regola, il compilatore non inserisce la chiamata ed è necessario aggiungerlo al codice.
Esempio
Nell'esempio di Visual Basic seguente viene illustrato un tipo TypeB
che chiama correttamente il Finalize metodo nella relativa classe di 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
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per