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

Item [値]
規則 ID CA2121
カテゴリ Microsoft.Security
互換性に影響する変更点 あり

原因

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

Note

このルールは非推奨とされました。 詳細については、「非推奨の規則」を参照してください。

規則の説明

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

この規則は、C# および Visual Basic コンパイラによって適用されます。

違反の修正方法

通常、次のいずれかの操作により違反が発生します。

  • 型の静的コンストラクターを定義しましたが、それをプライベートとして設定しませんでした。

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

最初の種類の違反を修正するには、静的コンストラクターをプライベートとして設定します。 2 番目の種類を修正するには、プライベートな静的コンストラクターを型に追加します。

どのようなときに警告を抑制するか

これらの違反は抑制しないでください。 ソフトウェア設計に、静的コンストラクターへの明示的な呼び出しが必要である場合は、設計に重大な欠陥が含まれている可能性があるため、確認する必要があります。