Udostępnij za pośrednictwem


CA2221: Finalizatory powinny być chronione

Pozycja Wartość
Ruleid CA2221
Kategoria Microsoft.Usage
Zmiana powodująca niezgodność Niezgodność

Przyczyna

Typ publiczny implementuje finalizator, który nie określa dostępu rodziny (chronionej).

Uwaga

Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.

Opis reguły

Finalizatory muszą korzystać z modyfikatora dostępu „family”. Ta reguła jest wymuszana przez kompilatory języków C#, Visual Basic i C++.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, zmień finalizator tak, aby był dostępny dla rodziny.

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń dla tej reguły.

Przykład

Nie można naruszyć tej reguły w żadnym języku platformy .NET wysokiego poziomu; Może to być naruszone, jeśli piszesz język microsoft intermediate language.

// =============== CLASS MEMBERS DECLARATION ===================
//   note that class flags, 'extends' and 'implements' clauses
//          are provided here for information only

.namespace UsageLibrary
{
  .class public auto ansi beforefieldinit FinalizeMethodNotProtected
         extends [mscorlib]System.Object
  {
    .method public hidebysig instance void
            Finalize() cil managed
    {

      // Code size       1 (0x1)
      .maxstack  0
      IL_0000:  ret
    } // end of method FinalizeMethodNotProtected::Finalize

    .method public hidebysig specialname rtspecialname
            instance void  .ctor() cil managed
    {
      // Code size       7 (0x7)
      .maxstack  1
      IL_0000:  ldarg.0
      IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
      IL_0006:  ret
    } // end of method FinalizeMethodNotProtected::.ctor

  } // end of class FinalizeMethodNotProtected
} // end of namespace

Zobacz też