'<interfacename1>.<membername>' を実装できません。実装すると、型引数に実装された '<interfacename2>.<membername>' の実装と競合する可能性があります。

更新 : 2007 年 11 月

クラスが 2 つ以上のジェネリック インターフェイスを実装し、そのうちの 1 つが別のインターフェイスから継承されるので、同じインターフェイス メンバの 2 つの実装が、型引数の特定の値において衝突している可能性があります。

このエラーは次のようなコードで発生します。

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 は iFace1 からその独自の型パラメータ (u) を使用して継承するので、testClass は、同じ型引数が y および z に渡された場合に、同一のシグネチャを持つ 2 つのバージョンの iFace1.testSub を実装します。この場合、どちらの形式にアクセスすればよいかがはっきりしなくなります。

Error ID: BC32125

このエラーを解決するには

  • インターフェイスの継承構造を変更して、iFace1 を 2 つの異なる型引数で実装できないようにします。

    または

  • Implements ステートメントから、実装の衝突を起こしているインターフェイスの一方を削除します。

参照

概念

Implements キーワードおよび Implements ステートメント

Visual Basic におけるジェネリック型

参照

Class ステートメント (Visual Basic)

Interface ステートメント (Visual Basic)

Implements ステートメント