Die Erweiterungsmethode '<Methodenname>' verfügt über Typeinschränkungen, die nie erfüllt werden

Aktualisiert: November 2007

Extension method '<methodname>' has type constraints that can never be satisfied

Die Typparameter dieser Methode interagieren auf eine Weise, die verhindert, dass sie jemals erfüllt werden. Die folgende Erweiterungsmethode bietet ein Beispiel.

'' Not valid.
'<Extension()> _
'Sub extensionExample(Of T As U, U)(ByVal para1 As T, ByVal para2 As U)
'End Sub

Da es sich bei der Methode um eine Erweiterungsmethode handelt, muss der Compiler bereits anhand des ersten Parameters in der Methodendeklaration, also para1, den Datentyp bzw. die Datentypen erkennen können, die durch die Methode erweitert werden, und das für diesen Parameter gesendete Argument bestimmen. Wenn der erste Parameter auf generische Typparameter (para1 as T) verweist, gelten die Einschränkungen dieser generischen Parameter für die Gruppe von Typen, auf die die Methode angewendet wird.

Die Anwendbarkeit einer Erweiterungsmethode wird durch das Argument bestimmt, das für den ersten Parameter angegeben wird. Im folgenden Code: arg1.

'' Not valid.

'arg1.extensionExample(arg2)

Es muss möglich sein, die Einschränkungen aller generischen Typparameter, auf die vom ersten Parameter (para1) verwiesen wird, ausschließlich anhand des ersten Arguments ( arg1) zu bestimmen. In extensionExample reicht der erste Parameter nicht aus, um die Gruppe der zu erweiternden Typen zu bestimmen. Typparameter T wird durch Typparameter U eingeschränkt, auf den nicht von para1 verwiesen wird und der nicht von arg1 abgeleitet werden kann. Daher kann die Anwendbarkeit der Methode auf einen möglichen Typ nicht festgestellt und die Methode niemals aufgerufen werden.

Fehler-ID: BC36561

So beheben Sie diesen Fehler

  • Ändern Sie die Typdeklaration, um die gegenseitige Abhängigkeit zwischen den Typen zu entfernen.

Siehe auch

Konzepte

Erweiterungsmethoden (Visual Basic)

Generische Typen in Visual Basic