Udostępnij za pośrednictwem


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ż