Udostępnij za pośrednictwem


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

Zobacz też

Inne zasoby

Implementing Finalize and Dispose