Freigeben über


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

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

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

Da die Methode eine Erweiterungsmethode ist, muss der Compiler den Datentyp bzw. die Datentypen, die von der Methode erweitert werden, auf Basis des ersten Parameters in der Methodendeklaration, para1, und des Arguments bestimmen können, das für diesen Parameter gesendet wird. Wenn der erste Parameter auf die generischen Typparameter ( para1 as T) verweist, schränken die Einschränkungen für generische Parameter den Satz von Typen ein, auf den die Methode angewendet wird.

Die Anwendbarkeit einer Erweiterungsmethode wird über das Argument bestimmt, das für den ersten Parameter bereitgestellt wird, bei dem es sich im folgenden Code um arg1 handelt.

'' Not valid.

'arg1.extensionExample(arg2)

Es muss möglich sein, die Einschränkungen für alle generischen Typparameter zu überprüfen, auf die vom ersten Parameter ( para1) verwiesen wird, indem nur das erste Argument ( arg1) betrachtet wird. In extensionExamplekann der zu erweiternde Satz von Typen nicht allein über den ersten Parameter ermittelt werden. Der Typparameter T wird durch den Typparameter Ueingeschränkt, auf den para1 nicht verweist und der nicht von arg1abgeleitet werden kann. Aus diesem Grund kann die Anwendbarkeit der Methode auf alle möglichen Typen nicht überprüft werden, und die Methode kann nie aufgerufen werden.

Fehler-ID: BC36561

So beheben Sie diesen Fehler

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

Siehe auch