Поделиться через


CA2121: статические конструкторы должны быть частными

TypeName

StaticConstructorsShouldBePrivate

CheckId

CA2121

Категория

Microsoft.Security

Критическое изменение

Критическое изменение

Причина

Тип содержит статический конструктор, который не является закрытым.

Описание правила

Статический конструктор, также называемый конструктором класса, используется для инициализации типа. Система вызывает статический конструктор перед созданием первого экземпляра типа или ссылкой на любые статические члены. Пользователь не может управлять вызовами статического конструктора. Если статический конструктор не является закрытым, он может быть вызван кодом, находящимся за пределами системы. В зависимости от операций, выполняемых в конструкторе, это может стать причиной непредвиденного поведения

Данное правило принудительно применяется компиляторами языков C# и Visual Basic .NET.

Устранение нарушений

Нарушения этого правила обычно вызываются одним из следующих действий.

  • Для типа определен статический конструктор, который не объявлен закрытым.

  • Компилятор языка программирования добавил статический конструктор по умолчанию и не объявил его закрытым.

Чтобы устранить нарушение первого типа, сделайте статический конструктора закрытым. Чтобы устранить нарушение второго типа, добавьте в тип закрытый статический конструктор.

Отключение предупреждений

Отключайте предупреждения о нарушении этого правила. Если в программе требуется явный вызов статического конструктора, то, скорее всего, в ее структуре имеются серьезные недостатки, которые необходимо изучить.