Impossibile ereditare l'interfaccia '<nomeinterfaccia1>' perché l'interfaccia '<nomeinterfaccia2>' da cui eredita potrebbe essere identica all'interfaccia '<nomeinterfaccia3>', da cui l'interfaccia '<nomeinterfaccia4>' eredita, per alcuni tipi di argomenti

Aggiornamento: novembre 2007

Cannot inherit interface '<interfacename1>' because the interface '<interfacename2>' from which it inherits could be identical to interface '<interfacename3>' from which the interface '<interfacename4>' inherits for some type arguments

Un'interfaccia generica eredita da due o più interfacce generiche, ma due ereditarietà potrebbero essere in conflitto per determinati valori di argomenti di tipo.

Questo errore può essere generato dalle istruzioni seguenti.

Public Interface interfaceA(Of u)
End Interface
Public Interface interfaceX(Of v)
    Inherits interfaceA(Of v)
End Interface
Public Interface interfaceY(Of w)
    Inherits interfaceA(Of w)
End Interface
Public Interface derivedInterface(Of t1, t2)
    Inherits interfaceX(Of t1), interfaceY(Of t2)
End Interface

Se derivedInterface è costruita o implementata specificando lo stesso tipo sia per t1 che per t2, deve ereditare due versioni di interfaceA con argomenti di tipo identici. Le istruzioni dell'esempio creerebbero ambiguità circa la versione cui accedere.

ID errore: BC32122

Per correggere l'errore

  • Cambiare uno degli argomenti di tipo forniti all'interfaccia derivata in modo che non vi sia conflitto.

    -oppure-

  • Rimuovere dall'istruzione Inherits una delle interfacce che causano il possibile conflitto di ereditarietà o implementazione.

Vedere anche

Concetti

Cenni preliminari sulle interfacce

Nozioni fondamentali sull'ereditarietà

Tipi generici in Visual Basic

Riferimenti

Istruzione Interface (Visual Basic)

Istruzione Inherits