Compilerfehler CS1929
'typeB' enthält keine Definition für „Methode“ und die beste Erweiterungsmethodeüberladung „typeC.method“ erfordert einen Empfänger vom Typ „typeA“
Dieser Fehler wird generiert, wenn Sie versuchen, eine Erweiterungsmethode über eine Klasse aufzurufen, die sie nicht erweitert. Im hier gezeigten Beispiel wird die Erweiterungsmethode für die abgeleitete Klasse D
definiert, jedoch nicht für die Basisklasse B
.
So beheben Sie diesen Fehler
- Erstellen Sie eine neue Erweiterungsmethode für den Typ, in dem Sie diese aufrufen müssen oder
- verschieben Sie den Aufruf in ein Objekt des Typs, den die vorhandene Methode erweitert.
Beispiel
Mit dem folgenden Code wird CS1929 generiert:
static class Extension
{
public static void ExtensionMethod(this D d)
{
}
}
class D : B
{
}
class B
{
static void Main()
{
B b = new B();
b.ExtensionMethod(); // CS1929
}
}
Der folgende Code löst das CS1929 wie in 1 beschrieben. - durch Erstellen einer neuen Erweiterungsmethode für den richtigen Typ „B“:
static class Extension
{
public static void ExtensionMethod(this D d)
{
}
public static void NewExtensionMethod(this B b)
{
}
}
class D : B
{
}
class B
{
static void Main()
{
B b = new B();
b.NewExtensionMethod();
}
}
Der folgende Code löst das CS1929 wie in 2 beschrieben. - Verschieben des Aufrufs in ein Objekt des richtigen Typs „D“:
static class Extension
{
public static void ExtensionMethod(this D d)
{
}
}
class D : B
{
}
class B
{
static void Main()
{
D d = new D();
d.ExtensionMethod();
}
}
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für