拡張メソッド '<メソッド名>' に、満たされる可能性のない型制約があります
このメソッドの型パラメーターは、満たされることが妨げられる仕方で相互作用します。 次の拡張メソッドは、例を示します。
'' 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
- 型の宣言を変更して、型の間で相互依存の状態をなくします。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。