Udostępnij za pośrednictwem


CA2121: Konstruktory statyczne powinny być prywatne

Pozycja Wartość
Ruleid CA2121
Kategoria Microsoft.Security
Zmiana powodująca niezgodność Kluczowa

Przyczyna

Typ ma konstruktor statyczny, który nie jest prywatny.

Uwaga

Ta reguła została przestarzała. Aby uzyskać więcej informacji, zobacz Przestarzałe reguły.

Opis reguły

Konstruktor statyczny, znany również jako konstruktor klasy, służy do inicjowania typu. System wywołuje statyczny konstruktor przed utworzeniem pierwszego wystąpienia typu lub przed odwołaniem do któregokolwiek ze statycznych elementów członkowskich. Użytkownik nie ma kontroli nad wywoływaniem konstruktora statycznego. Jeśli konstruktor statyczny nie jest prywatny, może być wywołany przez kod inny niż system. W zależności od operacji, które są wykonywane w konstruktorze, może to spowodować nieoczekiwane zachowanie.

Ta reguła jest wymuszana przez kompilatory języka C# i Visual Basic.

Jak naprawić naruszenia

Naruszenia są zwykle spowodowane przez jedną z następujących akcji:

  • Zdefiniowano konstruktor statyczny dla typu i nie utworzono go jako prywatnego.

  • Kompilator języka programowania dodał domyślny konstruktor statyczny do typu i nie uczynił go prywatnym.

Aby naprawić pierwszy rodzaj naruszenia, utwórz prywatny konstruktor statyczny. Aby naprawić drugi rodzaj, dodaj prywatny konstruktor statyczny do typu.

Kiedy pomijać ostrzeżenia

Nie pomijaj tych naruszeń. Jeśli projekt oprogramowania wymaga jawnego wywołania konstruktora statycznego, prawdopodobnie projekt zawiera poważne wady i powinien zostać sprawdzony.