无法根据这些实参推断“typename”中定义的扩展方法“<methodname>”中类型形参的数据类型,因为这些实参没有转换为同一类型

更新:2007 年 11 月

错误消息

无法从这些实参推断扩展方法“<methodname>”(在“typename”中定义)中类型形参的数据类型,因为这些实参无法转换为同一类型。此错误可以通过显式指定数据类型来更正。

在计算对泛型扩展方法的调用时,已经尝试使用类型推断功能来确定类型形参的数据类型。编译器无法找到符合所有实参约束的数据类型。因此,编译器报告此错误。

说明:

当无法指定实参时(例如,对于查询表达式中的查询运算符),显示的错误消息不包括第二个句子。

下面的代码演示此错误。

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

更正此错误

  • 您或许能够将一个或多个实参显式转换为某个兼容类型,如下面的代码所示:

    c1.targetMethod(19, #3/4/2007#.ToOADate)
    
  • 您或许能够为实参转换到的类型形参指定数据类型,如下面的代码所示:

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

请参见

概念

扩展方法 (Visual Basic)

宽松委托转换

Visual Basic 中的泛型过程

隐式转换和显式转换

参考

类型转换函数

其他资源

Visual Basic 中的类型转换