'typename' で定義された拡張メソッド '<methodname>' 内の型パラメータの 1 つ以上のデータ型は同じ型には変換されないため、これらの引数から推論することはできません

更新 : 2007 年 11 月

エラー メッセージ

'typename' で定義された拡張メソッド '<methodname>' 内の型パラメータの 1 つ以上のデータ型は同じ型には変換されないため、これらの引数から推論することはできません。データ型を明示的に指定すると、このエラーが修正される可能性があります。

ジェネリック拡張メソッドの呼び出しを評価するときに、型の推論を使用して型パラメータのデータ型を決定しようとしました。コンパイラは、すべての引数の制約に合うデータ型を見つけることができませんでした。このため、このエラーが発生しました。

Bb531241.alert_note(ja-jp,VS.90).gifメモ :

引数を指定できない場合 (たとえば、クエリ式内のクエリ演算子など)、エラーの 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

Error ID: BC36661 および BC36658

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

  • 次のコード例のように、1 つ以上の引数を互換性のある型に明示的に変換できる場合があります。

    c1.targetMethod(19, #3/4/2007#.ToOADate)
    
  • 次のコード例のように、引数が変換される型パラメータのデータ型を指定できる場合があります。

    c1.targetMethod(Of String)(19, #3/4/2007#)
    

参照

概念

拡張メソッド (Visual Basic)

厳密でないデリゲート変換

Visual Basic におけるジェネリック プロシージャ

暗黙の型変換と明示的な型変換

参照

データ型変換関数

その他の技術情報

Visual Basic における型変換