Compartir a través de


Los tipos titulares estáticos no deben tener constructores

Actualización: noviembre 2007

Nombre de tipo

StaticHolderTypesShouldNotHaveConstructors

Identificador de comprobación

CA1053

Categoría

Microsoft.Design

Cambio problemático

Motivo

Un tipo público o público anidado declara sólo miembros estáticos y tiene un constructor predeterminado público o protegido.

Descripción de la regla

El constructor no es necesario puesto que al llamar a los miembros estáticos no se requiere una instancia del tipo. Además, como el tipo tiene miembros no estáticos, al crear una instancia, no se proporciona acceso a cualquiera de los miembros del tipo.

Cómo corregir infracciones

Para corregir una infracción de esta regla, quite el constructor predeterminado o márquelo como privado.

Nota:

Algunos compiladores crean automáticamente un constructor predeterminado público si el tipo no define ningún constructor. Si éste es el caso de su tipo, agregue un constructor predeterminado privado para eliminar la infracción.

Cuándo suprimir advertencias

No suprima las advertencias de esta regla. La presencia del constructor sugiere que el tipo no sea un tipo estático.

Ejemplo

El siguiente ejemplo muestra un tipo que infringe esta regla. Observe que no hay ningún constructor predeterminado en el código fuente. Cuando este código se compila en un ensamblado, el compilador de C# insertará un constructor predeterminado, que infringirá esta regla. Para corregir esto, declare un constructor privado.

using System;

namespace DesignLibrary
{
   public class NoInstancesNeeded
   {
      // Violates rule: StaticHolderTypesShouldNotHaveConstructors.
      // Uncomment the following line to correct the violation.
      // private NoInstancesNeeded() {}

      public static void Method1() {}
      public static void Method2() {}
   }
}