CA2121: Statische Konstruktoren sollten privat sein.

Element Wert
RuleId CA2121
Category Microsoft.Security
Unterbrechende Änderung Breaking

Ursache

Ein Typ verfügt über einen statischen Konstruktor, der nicht privat ist.

Hinweis

Diese Regel wurde als veraltet markiert. Weitere Informationen finden Sie unter Veraltete Regeln.

Regelbeschreibung

Ein statischer Konstruktor, der auch als Klassenkonstruktor bezeichnet wird, wird verwendet, um einen Typ zu initialisieren. Das System ruft den statischen Konstruktor auf, bevor die erste Instanz des Typs erzeugt wird bzw. bevor auf irgendwelche statischen Member verwiesen wird. Der Benutzer hat keine Kontrolle darüber, wann der statische Konstruktor aufgerufen wird. Wenn ein statischer Konstruktor nicht privat ist, kann er von Code aufgerufen werden, der nicht Systemcode ist. Je nach den Operationen innerhalb des Konstruktors kann dies zu unerwartetem Verhalten führen.

Diese Regel wird von den C#- und Visual Basic-Compilern angewendet.

Behandeln von Verstößen

Verstöße werden in der Regel durch eine der folgenden Aktionen verursacht:

  • Sie haben einen statischen Konstruktor für Ihren Typ definiert und nicht als privat festgelegt.

  • Der Programmiersprachencompiler hat Ihrem Typ einen statischen Standardkonstruktor hinzugefügt und ihn nicht als privat festgelegt.

Den ersten Verstoß können Sie beheben, indem Sie Ihren statischen Konstruktor als privat festlegen. Den zweiten Verstoß können Sie beheben, indem Sie Ihrem Typ einen privaten statischen Konstruktor hinzufügen.

Wann sollten Warnungen unterdrückt werden?

Unterdrücken Sie diese Verstöße nicht. Wenn Ihr Softwareentwurf einen expliziten Aufruf eines statischen Konstruktors erfordert, enthält der Entwurf wahrscheinlich schwerwiegende Fehler und sollte überprüft werden.