'typename' で定義されている拡張メソッド '<メソッド名>' 内の型パラメーターのデータ型をこれらの引数から推論しようとしても、同じ型に変換されないため、できません。 データ型を明示的に指定すると、このエラーが修正される可能性があります。
ジェネリック拡張メソッドの呼び出しを評価するときに、型の推定を使用して、1 つ以上の型パラメーターに対して 1 つ以上のデータ型を決定しようとしました。 コンパイラは、すべての引数の制約を満たすデータ型を見つけることができませんでした。 そのため、このエラーが報告されました。
Note
引数の指定がオプションではない場合 (たとえば、クエリ式内のクエリ演算子など)、エラー メッセージの 2 つ目の文は表示されません。
次のコードはエラーを示しています。
Option Strict Off
Module Module3
Sub Main()
Dim c1 As New Class1
'' Not valid. Integer and Date do not convert to the same type.
'c1.targetMethod(19, #3/4/2007#)
End Sub
<System.Runtime.CompilerServices.Extension()> _
Sub targetMethod(Of T)(ByVal p0 As Class1, ByVal p1 As T, ByVal p2 As T)
End Sub
Class Class1
End Class
End Module
エラー ID: BC36661 および BC36658
このエラーを解決するには
次のコードに示されているように、互換性のある型に 1 つ以上の引数を明示的に変換することができます。
c1.targetMethod(19, #3/4/2007#.ToOADate)次のコードに示されているように、引数が変換する型パラメーターにデータ型を指定することができます。
c1.targetMethod(Of String)(19, #3/4/2007#)
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET