Share via


CA2221: Los finalizadores deben estar protegidos

Elemento Valor
RuleId CA2221
Category Microsoft.Usage
Cambio importante Poco problemático

Causa

Un tipo público implementa un finalizador que no especifica el acceso de la familia (protegida).

Nota

Esta regla está en desuso. Para más información, consulte Reglas en desuso.

Descripción de la regla

Los finalizadores deben utilizar el modificador de acceso de familia. Los compiladores de C#, Visual Basic y C++ aplican esta regla.

Cómo corregir infracciones

Para corregir una infracción de esta regla, cambie el finalizador a fin de que sea accesible para la familia.

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla.

Ejemplo

Esta regla no se puede infringir en ningún lenguaje general de .NET; se puede infringir si está escribiendo lenguaje intermedio de Microsoft.

// =============== 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 también