Os finalizadores devem ser protegidos

TypeName

FinalizersShouldBeProtected

CheckId

CA2221

Category (Categoria)

Microsoft.uso

Quebrando alterar

Não separável

Causa

Um tipo público implementa um finalizador não especifica a família de acesso (protegido).

Descrição da regra

Finalizadores devem usar o modificador de acesso da família.Essa regra é imposta pelos compiladores translation from VPE for Csharp, Visual Basic e Visual C++.

Como corrigir violações

Para corrigir uma violação dessa regra, altere o finalizador família acessíveis.

Quando suprimir avisos

Não suprimir um aviso da regra.

Exemplo

Esta regra não pode ser violada em qualquer linguagem .NET alto nível, ser violada se estiver escrevendo 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

Consulte também

Referência

Implementando Finalize e Dispose para Apagar up recursos não gerenciados