다음을 통해 공유


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 생성자에 대한 명시적인 호출이 필요하면 디자인에 심각한 결함이 포함될 수 있으므로 검토해 보아야 합니다.