Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Fehler und Warnungen im Zusammenhang mit Erweiterungsmethoden, die mit
-
CS1100: Die Methode weist einen Parametermodifizierer '
this
' auf, der sich nicht auf dem ersten Parameter befindet. -
CS1101: Der Parametermodifizierer '
ref
' kann nicht mit 'this
' verwendet werden. -
CS1102: Der Parametermodifizierer '
out
' kann nicht mit 'this
' verwendet werden. - CS1103: Der erste Parameter einer Erweiterungsmethode darf nicht vom Zeigertyp sein.
- CS1105: Erweiterungsmethoden müssen statisch sein.
- CS1106: Erweiterungsmethoden müssen in einer nicht generischen statischen Klasse definiert werden.
- CS1109: Erweiterungsmethoden müssen in statischen Klassen der obersten Ebene definiert werden, "name" ist eine geschachtelte Klasse.
- CS1110: Eine neue Erweiterung kann nicht definiert werden, da der erforderliche Compilertyp ExtensionAttribute nicht gefunden werden kann. Fehlt ein Verweis auf System.Core.dll?
-
CS1112: Verwenden Sie nicht 'ExtensionAttribute'. Verwenden Sie stattdessen das Schlüsselwort "
this
". - CS1113: Erweiterungsmethode, die für einen Werttyp definiert ist, kann nicht zum Erstellen von Stellvertretungen verwendet werden.
- CS1743: Der Standardwert für den Parameter "this" kann nicht angegeben werden.
- CS9281: Erweiterungsdeklarationen haben möglicherweise keinen Namen.
- CS9282: Erweiterungsdeklarationen können nur Methoden oder Eigenschaften enthalten.
- CS9283: Erweiterungen müssen in einer nicht generischen, statischen Klasse auf oberster Ebene deklariert werden.
- CS9284: Der Empfängerparameter einer Erweiterung darf keinen Standardwert aufweisen.
- CS9285: Ein Erweiterungscontainer kann nur einen Empfängerparameter haben.
- CS9287: Ein Empfängerparameter darf nicht denselben Namen wie ein Erweiterungscontainertypparameter haben.
- CS9288: Ein Parameter, eine lokale Variable oder eine lokale Funktion kann nicht denselben Namen wie ein Parameter für den Erweiterungscontainertyp aufweisen.
- CS9289: Der Membertypparameter hat denselben Namen wie ein Erweiterungscontainertypparameter.
- CS9290: Ein Parameter, eine lokale Variable oder eine lokale Funktion kann nicht denselben Namen wie ein Erweiterungsparameter haben.
-
CS9291: '
value
': Ein automatisch generierter Parametername ist mit einem Erweiterungsparameternamen in Konflikt. - CS9292: Ein Typparameter hat denselben Namen wie ein Erweiterungsparameter.
- CS9293: In diesem Kontext kann kein Erweiterungsparameter verwendet werden.
-
CS9294: '
value
': Ein automatisch generierter Parametername ist mit einem Erweiterungstypparameternamen in Konflikt. - CS9295: Der erweiterte Typ muss auf alle typparameter verweisen, die von der Erweiterung deklariert wurden, aber auf einen Typparameter wird nicht verwiesen.
-
CS9300: Der
ref
Empfängerparameter eines Erweiterungsblocks muss ein Werttyp oder ein generischer Typ sein, der auf die Struktur beschränkt ist. -
CS9301: Der Empfängerparameter "
in
" oder "ref readonly
" der Erweiterung muss ein konkreter (nicht generischer) Werttyp sein. - CS9302: Neues geschütztes Mitglied, das in einem Erweiterungsblock deklariert ist.
- CS9303: Instanzmitglieder können nicht in einem Erweiterungsblock mit einem nicht benannten Empfängerparameter deklariert werden.
- CS9304: Init-Only-Accessoren können nicht in einem Erweiterungsblock deklariert werden.
- CS9305: Modifizierer können nicht für den unbenannten Empfängerparameter des Erweiterungsblocks verwendet werden.
Häufige Fehler bei Erweiterungsdeklarationen
Der Compiler gibt diese Fehler aus, wenn Sie Regeln verletzen, die für alle Erweiterungsmemderdeklarationen gelten, unabhängig von der gewählten Syntax:
-
CS1102: Der Parametermodifizierer '
out
' kann nicht mit 'this
' verwendet werden. - CS1106: Erweiterungsmethoden müssen in einer nicht generischen statischen Klasse definiert werden.
- CS1103: Der erste Parameter einer Erweiterungsmethode darf nicht vom Zeigertyp sein.
- CS1109: Erweiterungsmethoden müssen in statischen Klassen der obersten Ebene definiert werden, "name" ist eine geschachtelte Klasse.
- CS1113: Erweiterungsmethode, die für einen Werttyp definiert ist, kann nicht zum Erstellen von Stellvertretungen verwendet werden.
- CS1743: Der Standardwert für den Parameter "this" kann nicht angegeben werden.
- CS9283: Erweiterungen müssen in einer nicht generischen, statischen Klasse auf oberster Ebene deklariert werden.
- CS9284: Der Empfängerparameter einer Erweiterung darf keinen Standardwert aufweisen.
- CS9285: Ein Erweiterungscontainer kann nur einen Empfängerparameter haben.
Jede Erweiterungsdeklaration muss den folgenden Regeln entsprechen:
- Der enthaltende Typ (
class
oderstruct
) muss nicht generisch sein undstatic
. - Der enthaltende Typ muss ein Typ der höchsten Ebene sein. Sie kann nicht in einem anderen Typ geschachtelt werden.
- Mitglieder, die eine Instanz eines Werttyps erweitern, können nicht in Delegaten konvertiert werden.
- Der Empfängerparameter kann den
out
Parametermodifizierer nicht enthalten. - Der Empfängerparameter kann keinen Standardargumentwert aufweisen.
- Zeigertypen können nicht erweitert werden. Mit anderen Worten: Der Parameter, auf den Sie den
this
Modifizierer anwenden, kann kein Zeigertyp sein.
Fehler im Zusammenhang mit Erweiterungsblockdeklarationen
Diese Fehler sind spezifisch für Erweiterungsblöcke, ein C#14-Feature. Erweiterungsblöcke werden mithilfe des extension
Schlüsselworts in einer statischen Klasse deklariert. Der extension
Deklariert den Typ und den Namen des Empfängers. Alle Elemente innerhalb des deklarierten extension
Blocks sind Erweiterungsmitglieder für diesen Empfänger:
- CS9281: Erweiterungsdeklarationen haben möglicherweise keinen Namen.
- CS9282: Erweiterungsdeklarationen können nur Methoden oder Eigenschaften enthalten.
- CS9287: Ein Empfängerparameter darf nicht denselben Namen wie ein Erweiterungscontainertypparameter haben.
- CS9288: Ein Parameter, eine lokale Variable oder eine lokale Funktion kann nicht denselben Namen wie ein Parameter für den Erweiterungscontainertyp aufweisen.
- CS9289: Der Membertypparameter hat denselben Namen wie ein Erweiterungscontainertypparameter.
- CS9290: Ein Parameter, eine lokale Variable oder eine lokale Funktion kann nicht denselben Namen wie ein Erweiterungsparameter haben.
-
CS9291: '
value
': Ein automatisch generierter Parametername ist mit einem Erweiterungsparameternamen in Konflikt. - CS9292: Ein Typparameter hat denselben Namen wie ein Erweiterungsparameter.
- CS9293: In diesem Kontext kann kein Erweiterungsparameter verwendet werden.
-
CS9294: '
value
': Ein automatisch generierter Parametername ist mit einem Erweiterungstypparameternamen in Konflikt. - CS9295: Der erweiterte Typ muss auf alle typparameter verweisen, die von der Erweiterung deklariert wurden, aber auf einen Typparameter wird nicht verwiesen.
-
CS9300: Der
ref
Empfängerparameter eines Erweiterungsblocks muss ein Werttyp oder ein generischer Typ sein, der auf die Struktur beschränkt ist. -
CS9301: Der Empfängerparameter "
in
" oder "ref readonly
" der Erweiterung muss ein konkreter (nicht generischer) Werttyp sein. - CS9302: Neues geschütztes Mitglied, das in einem Erweiterungsblock deklariert ist.
- CS9303: Instanzmitglieder können in einem Erweiterungsblock mit einem unbenannten Empfängerparameter nicht deklariert werden.
- CS9304: Init-Only-Accessoren können nicht in einem Erweiterungsblock deklariert werden.
- CS9305: Modifizierer können nicht für den unbenannten Empfängerparameter des Erweiterungsblocks verwendet werden.
Erweiterungsdeklarationen müssen den folgenden Regeln entsprechen:
- Die Erweiterung kann kein Namenstoken enthalten. Die Erweiterung deklariert nur den Empfänger.
- Der Empfängerparameter kann keinen Standardwert haben.
Erweiterungsmitglieder, die in einem Erweiterungsblock deklariert sind, müssen diese Regeln zusätzlich zu den allgemeinen Regeln befolgen:
- Nur Methoden und Eigenschaften sind gültige Erweiterungsmememmtypen. Erweiterungsmember können eine Instanz oder einen Typ erweitern.
- Die Erweiterung muss einen Parameternamen für den Empfänger angeben, um Mitglieder zu umfassen, die eine Instanz erweitern.
- Der Name des Empfängerparameters muss in diesem Erweiterungsblock eindeutig sein.
- Alle Erweiterungsmitglieder müssen alle Typparameter verwenden, die für die Erweiterung deklariert sind. Sie können weitere Typparameter hinzufügen.
Fehler im Zusammenhang mit this
Parametererweiterungsmethoden
Diese Fehler sind spezifisch für Erweiterungsmethoden, bei denen Sie den Empfänger deklarieren, indem Sie den this
Modifizierer zum ersten Parameter der Methode hinzufügen:
-
CS1100: Die Methode weist einen Parametermodifizierer '
this
' auf, der sich nicht auf dem ersten Parameter befindet. -
CS1101: Der Parametermodifizierer '
ref
' kann nicht mit 'this
' verwendet werden. - CS1105: Erweiterungsmethoden müssen statisch sein.
- CS1110: Eine neue Erweiterung kann nicht definiert werden, da der erforderliche Compilertyp ExtensionAttribute nicht gefunden werden kann. Fehlt ein Verweis auf System.Core.dll?
-
CS1112: Verwenden Sie nicht 'ExtensionAttribute'. Verwenden Sie stattdessen das Schlüsselwort "
this
".
Eine Erweiterungsmethode, bei der die Empfängerinstanz den this
Modifizierer enthält, muss zusätzlich zu den allgemeinen Regeln folgende Regeln erfüllen:
- Die Methode muss über den
static
Modifizierer verfügen. - Der
this
Parametermodifizierer muss auf den ersten Parameter angewendet werden. Sie kann nicht auf andere Parameter für die Methode angewendet werden. - Der
ref
out
Parametermodifizierer kann nicht auf den ersten Parameter angewendet werden. Zum Anwendenref
müssen Sie in einen Erweiterungsblock konvertieren. - In .NET Framework-Apps
System.Core.dll
muss als Referenz hinzugefügt werden. - Sie müssen den
this
Modifizierer für den ersten Parameter angeben. Sie können das ExtensionAttribute Attribut nicht direkt verwenden.