CA1053: Statische Haltertypen sollten keine Konstruktoren aufweisen
TypeName |
StaticHolderTypesShouldNotHaveConstructors |
CheckId |
CA1053 |
Kategorie |
Microsoft.Design |
Unterbrechende Änderung |
Breaking |
Ursache
Ein öffentlicher oder verschachtelter öffentlicher Typ deklariert nur statische Member und verfügt über einen öffentlichen oder geschützten Standardkonstruktor.
Regelbeschreibung
Der Konstruktor ist überflüssig, da zum Aufrufen statischer Member keine Instanz des Typs erforderlich ist.Da der Typ außerdem keine nicht statischen Member besitzt, wird durch die Erstellung einer Instanz kein Zugriff auf einen Member des Typs erteilt.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, entfernen Sie den Standardkonstruktor, oder definieren Sie ihn als privaten Konstruktor.
Hinweis |
---|
Einige Compiler erstellen automatisch einen öffentlichen Standardkonstruktor, wenn der Typ keine Konstruktoren definiert.Trifft dies auf Ihren Typ zu, fügen Sie einen private-Standardkonstruktor hinzu, um den Verstoß zu beseitigen. |
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.Das Vorhandensein des Konstruktors impliziert, dass es sich bei dem Typ nicht um einen statischen Typ handelt.
Beispiel
Im folgenden Beispiel wird ein Typ veranschaulicht, der gegen diese Regel verstößt.Beachten Sie, dass es im Quellcode keinen Standardkonstruktor gibt.Wenn dieser Code in eine Assembly kompiliert wird, fügt der C#-Compiler einen Standardkonstruktor ein, der gegen diese Regel verstößt.Um diesen Verstoß zu beheben, deklarieren Sie einen privaten Konstruktor.
using System;
namespace DesignLibrary
{
public class NoInstancesNeeded
{
// Violates rule: StaticHolderTypesShouldNotHaveConstructors.
// Uncomment the following line to correct the violation.
// private NoInstancesNeeded() {}
public static void Method1() {}
public static void Method2() {}
}
}