Auf Englisch lesen

Freigeben über


„<Schnittstellenname1>.<Membername>“ kann nicht implementiert werden, da die Implementierung zu einem Konflikt mit der Implementierung einiger Typargumente von „<Schnittstellenname2>.<Membername>“ führen könnte

Eine Klasse implementiert mehrere generische Schnittstellen, von denen eine von einer anderen erbt, und zwei Implementierungen eines Schnittstellenmembers können einen Konflikt mit bestimmten Werten von Typargumenten verursachen.

Dieser Fehler kann durch die folgenden Anweisungen generiert werden.

VB
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 von iFace1 erbt (unter Verwendung des eigenen Typparametersu), würde testClass zwei Versionen von iFace1.testSub mit identischen Signaturen implementieren, wenn dasselbe Typargument 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 so, dass iFace1 nicht mit zwei verschiedenen Typargumenten implementiert werden kann.

    Oder

  • Entfernen Sie die Implements -Anweisung aus einer der Schnittstellen, die zum Konflikt bei der Implementierung führen.

Siehe auch