英語で読む

次の方法で共有


拡張メソッド '<メソッド名>' に、満たされる可能性のない型制約があります

このメソッドの型パラメーターは、満たされることが妨げられる仕方で相互作用します。 次の拡張メソッドは、例を示します。

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

メソッドは拡張メソッドであるため、コンパイラは、メソッドの宣言の最初のパラメーター、 para1、およびそのパラメーターに渡される引数によってのみ、メソッドを拡張するデータ型を決定できる必要があります。 最初のパラメーターがジェネリック型パラメーター、 para1 as Tを参照するとき、ジェネリック パラメーターの制約は、メソッドを適用する型のセットを制限します。

拡張メソッドの適用性は最初のパラメーターに指定された引数から判断されます。次のコードでは arg1 が相当します。

'' Not valid.

'arg1.extensionExample(arg2)

最初の引数 para1だけを見て、最初のパラメーター arg1で参照されるすべてのジェネリック型パラメーターの制約を確認できる必要があります。 extensionExampleでは、最初のパラメーターだけでは、拡張されている型のセットを特定できません。 型パラメーター T は型パラメーター Uによって制約されますが、これは para1 によって参照されず、 arg1から推測できません。 したがって、可能な型へのメソッドの適用性を確認することはできず、このメソッドを呼び出すことはできません。

エラー ID: BC36561

このエラーを解決するには

  • 型の宣言を変更して、型の間で相互依存の状態をなくします。

関連項目