'<型名>' で定義されている拡張メソッド '<メソッド名>' 内の型パラメーターのデータ型をこれらの引数から推論しようとしても、複数の型の可能性があるため、できません

'<型名>' で定義されている拡張メソッド '<メソッド名>' 内の型パラメーターのデータ型をこれらの引数から推論しようとしても、複数の型の可能性があるため、できません。 データ型を明示的に指定すると、このエラーが修正される可能性があります。

ジェネリック拡張メソッドを呼び出すときに、型の推定を使用して型パラメーターの型を決定しようとしました。 コンパイラによって 1 つ以上の型パラメーターについて複数のデータ型の候補が検出されると、このエラーが報告されます。

Note

引数の指定がオプションではない場合 (たとえば、クエリ式内のクエリ演算子など)、エラー メッセージの 2 つ目の文は表示されません。

次のコードはエラーを示しています。

Option Strict Off
Imports System.Runtime.CompilerServices
Module Module1
    Sub Main()

        Dim caller As New Class1
        '' Not valid.
        'caller.targetExtension(1, "2")

    End Sub

    <Extension()> _
    Sub targetExtension(Of T)(ByVal p0 As Class1, ByVal p1 As T, ByVal p2 As T)
    End Sub

    Class Class1
    End Class

End Module

エラー ID: BC36655 (LINQ クエリ内) と BC36652 (クエリ外)

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

エラーがクエリの外部で出現する場合は、型パラメーターのデータ型を明示的に指定してみてください。

caller.targetExtension(Of Integer)(1, "2")
caller.targetExtension(Of String)(1, "2")

関連項目