Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O compilador está tentando resolver uma referência a uma propriedade ou procedimento sobrecarregado, mas a referência falha porque um argumento é do tipo Object e o objeto de referência tem o tipo de dados de uma interface. O Object argumento força o compilador a resolver a referência como limite tardio.
Nessas circunstâncias, o compilador resolve a sobrecarga através da classe de implementação em vez de através da interface subjacente. Se a classe renomeia uma das versões sobrecarregadas, o compilador não considera essa versão como uma sobrecarga porque seu nome é diferente. Isso, por sua vez, faz com que o compilador ignore a versão renomeada quando poderia ter sido a escolha correta para resolver a referência.
ID de erro: BC30933
Para corrigir este erro
Use
CTypepara converter o argumento paraObjecto tipo especificado pela assinatura da sobrecarga que você deseja chamar.Observe que não é útil converter o objeto de referência para a interface subjacente. Você deve lançar o argumento para evitar esse erro.
Exemplo
O exemplo a seguir mostra uma chamada para um procedimento sobrecarregado Sub que causa esse erro em tempo de compilação.
Module m1
Interface i1
Sub s1(ByVal p1 As Integer)
Sub s1(ByVal p1 As Double)
End Interface
Class c1
Implements i1
Public Overloads Sub s1(ByVal p1 As Integer) Implements i1.s1
End Sub
Public Overloads Sub s2(ByVal p1 As Double) Implements i1.s1
End Sub
End Class
Sub Main()
Dim refer As i1 = New c1
Dim o1 As Object = 3.1415
' The following reference is INVALID and causes a compiler error.
refer.s1(o1)
End Sub
End Module
No exemplo anterior, se o compilador permitisse a chamada como s1 escrita, a resolução ocorreria através da classe c1 em vez da interface i1. Isso significaria que o compilador não consideraria s2 porque seu nome é diferente em c1, mesmo que seja a escolha correta, conforme definido por i1.
Você pode corrigir o erro alterando a chamada para uma das seguintes linhas de código:
refer.s1(CType(o1, Integer))
refer.s1(CType(o1, Double))
Cada uma das linhas de código anteriores converte explicitamente a Object variável o1 para um dos tipos de parâmetros definidos para as sobrecargas.