CA2121: Los constructores estáticos deberían ser privados
Nombre de tipo |
StaticConstructorsShouldBePrivate |
Identificador de comprobación |
CA2121 |
Categoría |
Microsoft.Security |
Cambio problemático |
Sí |
Causa
Un tipo tiene un constructor estático que no es privado.
Descripción de la regla
Los constructores estáticos, también denominado constructores de clase, se utilizan para inicializar un tipo. El sistema llama al constructor estático antes de crear la primera instancia del tipo o antes de hacer referencia a cualquier miembro estático. El usuario no tiene ningún control sobre cuándo se llama al constructor estático. Si un constructor estático no es privado, se puede llamar a través de un código distinto del sistema. En función de las operaciones que se realizan en el constructor, esto puede producir un comportamiento inesperado.
Los compiladores de C# y Visual Basic .NET exigen esta regla.
Cómo corregir infracciones
Una de las acciones siguientes normalmente provoca las infracciones:
Se definió un constructor estático para su tipo y no lo estableció como privado.
El compilador del lenguaje de programación agregó un constructor estático predeterminado a su tipo y no lo estableció como privado.
Para corregir el primer tipo de infracción, establezca su constructor estático como privado. Para corregir el segundo tipo, agregue un constructor estático privado a su tipo.
Cuándo suprimir advertencias
No suprima estas infracciones. Si el diseño del software requiere una llamada explícita a un constructor estático, probablemente el diseño contenga errores graves y deberá revisarse.