Freigeben über


'<Schnittstellenname1>.<Membername>' kann nicht implementiert werden, da die Implementierung für manche Typargumente mit der Implementierung für '<Schnittstellenname2>.<Membername>' in Konflikt stehen könnte

Aktualisiert: November 2007

Cannot implement '<interfacename1>.<membername>' because its implementation could conflict with the implementation for '<interfacename2>.<membername>' for some type arguments

Eine Klasse implementiert mehr als eine generische Schnittstelle, von denen eine von einer anderen erbt, und zwei Implementierungen einer Schnittstelle könnten bei bestimmten Werten der Typargumente miteinander in Konflikt stehen.

Dieser Fehler kann durch die folgenden Anweisungen generiert werden.

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

Da iFace2 beim Erben von iFace1 einen eigenen Typparameter verwendet (u), würde testClass zwei Versionen von iFace1.testSub implementieren, die über identische Signaturen verfügten, wenn dasselbe Argument an y und z übergeben würde. Dies würde zu einer Mehrdeutigkeit in Bezug auf die Version führen, auf die zugegriffen werden soll.

Fehler-ID: BC32125

So beheben Sie diesen Fehler

  • Ändern Sie die Vererbungsstruktur der Schnittstellen, sodass iFace1 nicht mit zwei verschiedenen Typargumenten implementiert werden kann.

    – oder –

  • Entfernen Sie eine der Schnittstellen, die den Implementierungskonflikt verursachen, aus der Implements-Anweisung.

Siehe auch

Konzepte

Implements-Schlüsselwort und Implements-Anweisung

Generische Typen in Visual Basic

Referenz

Class-Anweisung (Visual Basic)

Interface-Anweisung (Visual Basic)

Implements-Anweisung