O(s) tipo(s) de dados do(s) parâmetro(s) de tipo no método de extensão '<methodname>' definido em 'typename' não podem ser inferidos a partir destes argumentos porque não convertem para o mesmo tipo

O(s) tipo(s) de dados do(s) parâmetro(s) de tipo no método de extensão '<methodname>' definido em 'typename' não podem ser inferidos a partir destes argumentos porque não convertem para o mesmo tipo. Especificar explicitamente o(s) tipo(s) de dados pode corrigir esse erro.

Foi feita uma tentativa de usar a inferência de tipo para determinar o tipo de dados (ou tipos) do parâmetro de tipo (ou parâmetros) ao avaliar uma chamada para um método de extensão genérico. O compilador não pôde encontrar um tipo de dados que atenda às restrições de todos os argumentos. Portanto, ele relatou esse erro.

Nota

Quando a especificação de argumentos não é uma opção (por exemplo, para operadores de consulta em expressões de consulta), a mensagem de erro aparece sem a segunda frase.

O código a seguir demonstra o erro.

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 de erro: BC36661 e BC36658

Para corrigir este erro

  • Talvez seja possível converter um ou mais argumentos explicitamente em um tipo compatível, conforme mostrado no código a seguir:

    c1.targetMethod(19, #3/4/2007#.ToOADate)
    
  • Talvez seja possível especificar um tipo de dados para o parâmetro ou parâmetros de tipo para os quais os argumentos são convertidos, conforme mostrado no código a seguir:

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

Consulte também