CA2121:靜態建構函式應為私用
型別名稱 |
StaticConstructorsShouldBePrivate |
CheckId |
CA2121 |
分類 |
Microsoft.Security |
中斷變更 |
中斷 |
原因
具有靜態建構函式的型別不是私用的 (Private)。
規則描述
靜態建構函式 (也稱為類別建構函式) 是用於初始化型別。 系統會在建立型別的第一個執行個體 (Instance) 或參考任何靜態成員之前呼叫靜態建構函式。 因此,使用者對何時呼叫靜態建構函式不具控制權。 如果靜態建構函式不是私用的,則可由系統以外的程式碼呼叫。 視建構函式中執行的作業而定,這會造成非預期的行為。
C# 和 Visual Basic .NET 編譯器會強制執行此規則。
如何修正違規
違規通常是由下列動作造成:
您定義型別的靜態建構函式,但未將它設為私用。
程式語言編譯器將預設靜態建構函式加入至型別,但未將它設為私用。
若要修正第一種違規的情況,請將靜態建構函式設為私用。 若要修正第二種違規的情況,請將私用的靜態建構函式加入至型別。
隱藏警告的時機
請勿隱藏這些違規。 如果您的軟體設計需要明確呼叫靜態建構函式,這個設計就可能包含重大的缺陷,需要重新檢視。