Impossibile implementare '<interfacename1>.<membername>'. La sua implementazione potrebbe essere in conflitto con l'implementazione di '<interfacename2>.<membername>' per alcuni argomenti di tipo

Una classe implementa più di un'interfaccia generica, una delle quali eredita dall'altra, e le due implementazioni di un membro di interfaccia potrebbero essere in conflitto per determinati valori di argomenti di tipo.

Le istruzioni seguenti possono generare questo errore.

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  

Dal momento che iFace2 eredita da iFace1 usando il relativo parametro di tipo (u), testClass implementerebbe due versioni di iFace1.testSub con firme identiche se lo stesso argomento di tipo venisse passato a y e z. In questo modo si produrrebbe un'ambiguità sulla versione a cui accedere.

ID errore: BC32125

Per correggere l'errore

  • Modificare la struttura di ereditarietà delle interfacce in modo che iFace1 non possa essere implementata con due differenti argomenti di tipo.

    oppure

  • Rimuovere dall'istruzione Implements una delle interfacce che producono il conflitto di implementazione.

Vedi anche