CA2220: Finalizatory powinny wywoływać finalizatory klasy podstawowej
TypeName |
FinalizersShouldCallBaseClassFinalizer |
CheckId |
CA2220 |
Kategoria |
Microsoft.Usage |
Zmiana kluczowa |
Niekluczowa |
Przyczyna
Typ, który zastępuje Object.Finalize nie wywołuje metody Finalize w jej klasie podstawowej.
Opis reguły
Finalizacja musi być powielana w hierarchii dziedziczenia.Żeby to zapewnić, typy muszą wywołać metodę Finalize ich klas podstawowych z poziomu ich własnej metody Finalize.Kompilator C# automatycznie doda wywołanie finalizatora klasy podstawowej.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, wywołaj metodę Finalize typu podstawowego ze swojej metody Finalize.
Kiedy pominąć ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły.Niektóre kompilatory przeznaczone docelowo dla środowiska uruchomieniowego CLR wstawiają wywołanie do finalizatora typu podstawowego do języka pośredniego firmy Microsoft (MSIL).Jeśli zgłaszane jest ostrzeżenie o tej regule, kompilator nie wstawi wywołania i musisz dodać je do kodu ręcznie.
Przykład
W poniższym przykładzie kodu języka Visual Basic pokazano typ TypeB, który poprawnie wywołuje metodę Finalize w jego klasie podstawowej.
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