無法實作 '<interfacename1>.<membername>',因為它的實作可能會與部分型別引數之 '<interfacename2>.<membername>' 的實作衝突

更新:2007 年 11 月

類別實作了一個以上的泛型介面 (其中一個介面繼承自另一個介面),而且介面成員的兩個實作可能因為某些型別引數的值而發生衝突。

下列陳述式可能產生此錯誤。

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

由於 iFace2 會使用自己的型別參數 (u) 繼承自 iFace1,所以如果相同的型別引數傳遞至 y 和 z,testClass 就會實作具有相同簽章 (Signature) 之 iFace1.testSub 的兩個版本。這會造成存取版本的模稜兩可 (Ambiguity)。

錯誤 ID:BC32125

若要更正這項錯誤

  • 請變更介面的繼承結構,如此就無法使用兩個不同的型別引數實作 iFace1。

    - 或 -

  • 從 Implements 陳述式移除其中一個造成實作衝突的介面。

請參閱

概念

Implements 關鍵字和 Implements 陳述式

Visual Basic 中的泛型型別

參考

Class 陳述式 (Visual Basic)

Interface 陳述式 (Visual Basic)

Implements 陳述式