Partilhar via


Não é possível implementar '<nomeinterface1>.<nomemembro>' porque sua implementação poderia entrar em conflito com a implementação para '<nomeinterface2>.<nomemembro>' para alguns argumentos de tipo.

Uma classe implementa mais de uma interface genérica, uma que herda de outra, e duas implementações de um membro de interface poderia entrar em conflito para certos valores de argumentos de tipo.

A seguinte declaração pode gerar esse erro.

Public Interface iFace1(Of t)
    Sub testSub()
End Interface
Public Interface iFace2(Of u)
    Inherits iFace1(Of u)
End Interface
Public Class testClass(Of y, z)
    Implements iFace1(Of y), iFace2(Of z)
    Public Sub testSuby() Implements iFace1(Of y).testSub
    End Sub
    Public Sub testSubz() Implements iFace1(Of z).testSub
    End Sub
End Class

Devido ao fato de que iFace2 herda de iFace1 usando seu próprio parâmetro de tipo (u), testClass implementaria duas versões de iFace1.testSub com assinaturas idênticas se o mesmo argumento de tipo foi passado para y e z.Isto produziria uma ambiguidade sobre quais versões acessar.

ID de erro: BC32125

Para corrigir este erro

  • Altere a estrutura de herança das interfaces de modo que iFace1 não possa ser implementado com dois argumentos de tipo diferentes.

    - ou -

  • Remova da declaração Implements uma das interfaces que resulta no conflito de implementação.

Consulte também

Conceitos

Palavra-chave Implements e a demonstrativo Implements

Tipos genéricos no Visual Basic

Referência

Declaração Class (Visual Basic)

Declaração Interface (Visual Basic)

Implementa Declaração