CA2220: Finalizatory powinny wywoływać finalizatory klasy bazowej
Pozycja | Wartość |
---|---|
Ruleid | CA2220 |
Kategoria | Microsoft.Usage |
Zmiana powodująca niezgodność | Niezgodność |
Przyczyna
Typ, który zastępuje System.Object.Finalize , nie wywołuje metody w klasie bazowej Finalize .
Uwaga
Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.
Opis reguły
Finalizacja musi być powielana w hierarchii dziedziczenia. Aby to zapewnić, typy muszą wywoływać metodę klasy Finalize bazowej z własnej Finalize metody. Kompilator języka C# automatycznie dodaje wywołanie finalizatora klasy bazowej.
Jak naprawić naruszenia
Aby naprawić naruszenie tej reguły, wywołaj metodę typu Finalize podstawowego z Finalize metody .
Kiedy pomijać ostrzeżenia
Nie pomijaj ostrzeżeń dla tej reguły. Niektóre kompilatory przeznaczone dla środowiska uruchomieniowego języka wspólnego wstawia wywołanie finalizatora typu podstawowego do języka pośredniego firmy Microsoft (MSIL). Jeśli zostanie zgłoszone ostrzeżenie z tej reguły, kompilator nie wstawia wywołania i musisz dodać go do kodu.
Przykład
Poniższy przykład języka Visual Basic przedstawia typ TypeB
, który poprawnie wywołuje metodę Finalize w swojej klasie bazowej.
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
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla