CA2121: 静的コンストラクターはプライベートでなければなりません

TypeName

StaticConstructorsShouldBePrivate

CheckId

CA2121

カテゴリ

Microsoft.Security

互換性に影響する変更点

あり

原因

型にプライベートではない静的コンストラクターがあります。

規則の説明

静的コンストラクター (クラス コンストラクターとも呼ばれます) は、型の初期化に使用されます。 システムで静的コンストラクターが呼び出されてから、型の最初のインスタンスが作成されるか、静的メンバーが参照されます。 静的コンストラクターが呼び出されたとき、ユーザーは何も制御できません。 静的コンストラクターがプライベートである場合、システム以外のコードから呼び出すことができます。 コンストラクターで実行される操作によっては、これによって予期しない動作が発生することがあります。

C# と Visual Basic .NET のコンパイラではこの規則が必須です。

違反の修正方法

一般に、規則違反は次のアクションで発生します。

  • 型に静的コンストラクターを定義し、プライベートにしませんでした。

  • プログラミング言語のコンパイラによって既定の静的コンストラクターが型に追加され、プライベートに指定されませんでした。

1 つ目の違反を修正するには、静的コンストラクターをプライベートにします。 2 つ目の違反を修正するには、プライベートの静的コンストラクターを型に追加します。

警告を抑制する状況

この規則違反は抑制しないでください。 ソフトウェア デザインで静的コンストラクターの明示的な呼び出しが必要である場合、デザインに重大な欠陥のある可能性が高いため、再確認が必要です。