Partilhar via


Tipos de dados do tipo inferir parâmetros no método de extensão '<methodname>' definido em '<typename>' não podem ser de com base nesses argumentos porque há mais de um tipo possível

Mensagem de erro

Tipos de dados do tipo inferir parâmetros no método de extensão '<methodname>' definido em '<typename>' não podem ser de com base nesses argumentos porque há mais de um tipo possível.Especificando os dados tipos explicitamente podem corrigir esse erro.

Foi feita uma tentativa de usar inferência de tipos de tipos para determinar o tipo (ou tipos) de parâmetro de tipo (ou parâmetros) em uma telefonar para um método de extensão genérica.O compilador encontra mais de um tipo de dados possíveis para um ou mais dos parâmetros de tipo e relata esse erro.

Observação:

Quando especificar 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 sentença.

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 LINQ consultas) e BC36652 (fora consultas)

Para corrigir este erro

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

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

Consulte também

Conceitos

Métodos de extensão (Visual Basic)

Procedimentos Genéricos em Visual Basic

Referência

Opção declaração estrito