CA2121: Los constructores estáticos deben ser privados

Elemento Valor
RuleId CA2121
Category Microsoft.Security
Cambio importante Problemático

Causa

Un tipo tiene un constructor estático que no es privado.

Nota

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

Descripción de la regla

Un constructor estático, también conocido como "constructor de clase", se usa 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 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 aplican esta regla.

Cómo corregir infracciones

Las infracciones se suelen producir por una de las acciones siguientes:

  • Ha definido un constructor estático para el tipo y no lo ha hecho privado.

  • El compilador de lenguaje de programación ha agregado un constructor estático predeterminado al tipo y no lo ha hecho privado.

Para corregir el primer tipo de infracción, haga que el constructor estático sea privado. Para corregir el segundo tipo, agregue un constructor estático privado al tipo.

Cuándo suprimir las advertencias

No suprima estas infracciones. Si el diseño de software requiere una llamada explícita a un constructor estático, es probable que el diseño contenga errores graves y deba revisarse.