无法实现“<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 将实现带有相同签名的 iFace1.testSub 的两个版本。这将产生关于要访问哪个版本的多义性。

**错误 ID:**BC32125

更正此错误

  • 更改接口的继承结构,从而使 iFace1 无法用两个不同的类型变量实现。

    - 或 -

  • 从 Implements 语句中移除导致实现冲突的那个接口。

请参见

概念

Implements 关键字和 Implements 语句

Visual Basic 中的泛型类型

参考

Class 语句 (Visual Basic)

Interface 语句 (Visual Basic)

Implements 语句