CA1000: Statische Member nicht in generischen Typen deklarieren
TypeName |
DoNotDeclareStaticMembersOnGenericTypes |
CheckId |
CA1000 |
Kategorie |
Microsoft.Design |
Unterbrechende Änderung |
Breaking |
Ursache
Ein extern sichtbarer generischer Typ enthält einen static-Member (Shared in Visual Basic).
Regelbeschreibung
Wenn ein static-Member eines generischen Typs aufgerufen wird, muss das Typargument für den Typ angegeben werden.Wenn ein generischer Instanzmember, der keine Unterstützung für Rückschlüsse bietet, aufgerufen wird, muss das Typargument für den Member angegeben werden.Die Syntax zum Angeben des Typarguments in diesen beiden Fällen ist unterschiedlich und kann schnell verwechselt werden, wie die folgenden Aufrufe verdeutlichen:
' Shared method in a generic type.
GenericType(Of Integer).SharedMethod()
' Generic instance method that does not support inference.
someObject.GenericMethod(Of Integer)()
// Static method in a generic type.
GenericType<int>.StaticMethod();
// Generic instance method that does not support inference.
someObject.GenericMethod<int>();
Im Prinzip sollten beide vorherigen Deklarationen vermieden werden, sodass das Typargument nicht angegeben werden muss, wenn der Member aufgerufen wird.Daraus ergibt sich eine Syntax zum Aufrufen von Membern in Generika, die sich nicht von der Syntax für nicht generische Typen unterscheidet.Weitere Informationen finden Sie unter CA1004: Generische Methoden müssen den Typparameter angeben.
Behandeln von Verstößen
Um einen Verstoß gegen diese Regel zu beheben, entfernen Sie den statischen Member, oder ändern Sie ihn in einen Instanzmember.
Wann sollten Warnungen unterdrückt werden?
Unterdrücken Sie keine Warnung dieser Regel.Durch die Bereitstellung von Generika in einer einfach zu verstehenden und verwendenden Syntax wird die Zeit, die Sie zum Erlernen benötigen, reduziert und die Übernahmerate neuer Bibliotheken erhöht.
Verwandte Regeln
CA1005: Übermäßige Anzahl von Parametern in generischen Typen vermeiden
CA1010: Auflistungen müssen eine generische Schnittstelle implementieren
CA1002: Generische Listen nicht verfügbar machen
CA1006: Generische Typen in Membersignaturen nicht schachteln
CA1004: Generische Methoden müssen den Typparameter angeben
CA1003: Generische Ereignishandlerinstanzen verwenden
CA1007: Nach Möglichkeit Generika verwenden