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 é possível mais do que um 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 desses argumentos porque mais de um tipo é possível. 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 (ou tipos) do parâmetro de tipo (ou parâmetros) em uma chamada para um método de extensão genérico. O compilador encontra mais de um tipo de dados possível para um ou mais parâmetros de tipo e relata 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
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 de erro: BC36655 (dentro de consultas LINQ) e BC36652 (consultas externas)

Para corrigir este erro

Se o erro aparecer fora de uma consulta, tente especificar o tipo de dados do parâmetro ou parâmetros de tipo explicitamente:

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

Consulte também