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 |
Sí |
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() {}
}
}