Partager via


Impossible d'implémenter '<NomInterface1>.<NomMembre>', car son implémentation pourrait être en conflit avec l'implémentation de '<NomInterface2>.<NomMembre>' pour certains arguments de type

Mise à jour : novembre 2007

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

Une classe implémentant plusieurs interfaces génériques, l'une héritant de l'autre, deux implémentations d'un membre d'interface pourraient être en conflit pour certaines valeurs d'arguments de type.

Les instructions suivantes peuvent générer cette erreur.

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 héritant d'iFace1 à l'aide de son propre paramètre de type (u), testClass implémenterait deux versions d'iFace1.testSub avec des signatures identiques si le même argument de type était passé à y et z. Cela produirait une ambiguïté à propos de la version à laquelle accéder.

ID d'erreur : BC32125

Pour corriger cette erreur

  • Modifiez la structure d'héritage des interfaces, afin que iFace1 ne puisse pas être implémentée avec deux arguments de type différents.

    - ou -

  • Supprimez de l'instruction Implements l'une des interfaces provoquant le conflit d'implémentation.

Voir aussi

Concepts

Implements, mot clé et instruction

Types génériques en Visual Basic

Référence

Class, instruction (Visual Basic)

Interface, instruction (Visual Basic)

Implements, instruction