Resolução de sobrecarregamento ligada tardiamente não pode ser aplicada a '<nomeprocedimento>' porque a instância que acessa é um tipo interface
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 da referência possui o tipo de dados de uma interface.O argumento Object obriga o compilador a resolver a referência como ligada tardiamente.
Nesteas circunstâncias, o compilador resolve o sobrecarregamento através da classe implementadora ao invés da interface subjacente.Se a classe renomeia uma das versões sobrecarregadas, o compilador não considera que aquela versão seja um sobrecarregamento porque seu nome é diferente.Isto por sua vez faz o compilador ignorar a versão renomeada quando ela puder ter sido a escolha correta para resolver a referência.
ID de erro: BC30933
Para corrigir este erro
Use CType para lançar um argumento de Object ao tipo especificado pela assinatura do sobrecarregamento que você deseja chamar.
Note que isso não ajuda a lançar o objeto que faz referência na interface subjacente.Você precisa lançar o argumento para evitar este erro.
Exemplo
O exemplo a seguir mostra uma chamada para um procedimento Sub sobrecarregado que causa este erro no momento da 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 a s1 como escrito, a resolução teria se realizado através da classe c1 ao invés da onterface i1.Isto significaria que o compilador não consideraria s2 porque seu nome é diferente c1, muito embora seja a escolha correta como definido por i1.
Você pode corrigir o erro alterando a chamada para uma das seguites linhas do código:
refer.s1(CType(o1, Integer))
refer.s1(CType(o1, Double))
Cada uma das linhas de código anteriores usa explicitamente o Object variável o1 para um dos tipos de parâmetro definidos para as sobrecargas.
Consulte também
Conceitos
Resolução de Sobrecarregamento