CA2121: static 생성자는 private이어야 합니다.
TypeName |
StaticConstructorsShouldBePrivate |
CheckId |
CA2121 |
범주 |
Microsoft.Security |
변경 수준 |
주요 변경 |
원인
형식에 private이 아닌 static 생성자가 있습니다.
규칙 설명
static 생성자는 클래스 생성자라고도 하며 형식을 초기화하는 데 사용됩니다.시스템에서는 형식의 첫 번째 인스턴스가 만들어지거나 static 멤버가 참조되기 전에 static 생성자를 호출합니다.사용자는 static 생성자가 호출되는 시점을 제어할 수 없습니다.static 생성자가 private이 아니면 시스템 이외의 코드에서 이를 호출할 수 있습니다.이렇게 되면 생성자에서 수행하는 작업에 따라 예기치 않은 동작이 발생할 수 있습니다.
이 규칙은 C# 및 Visual Basic .NET 컴파일러에서 적용됩니다.
위반 문제를 해결하는 방법
대개 다음 작업 중 하나로 인해 위반이 발생합니다.
형식에 대해 static 생성자를 정의하고 이를 private으로 지정하지 않았습니다.
프로그래밍 언어 컴파일러에서 기본 static 생성자를 형식에 추가하고 이를 private으로 지정하지 않았습니다.
첫 번째 유형의 위반 문제를 해결하려면 static 생성자를 private으로 만듭니다.두 번째 유형의 위반 문제를 해결하려면 형식에 private static 생성자를 추가합니다.
경고를 표시하지 않는 경우
이러한 위반은 표시해야 합니다.소프트웨어 디자인에 static 생성자에 대한 명시적인 호출이 필요하면 디자인에 심각한 결함이 포함될 수 있으므로 검토해 보아야 합니다.