L'accès à la propriété par défaut est ambigu entre le membre '<nompropriétépardéfaut>' de l'interface héritée '<nominterface1>' et le membre '<nompropriétépardéfaut>' de l'interface héritée '<nominterface2>'

Une interface hérite de deux interfaces, chacune déclarant une propriété par défaut avec le même nom. Le compilateur ne peut pas résoudre un accès à cette propriété par défaut sans qualification. L'exemple suivant illustre ce comportement :

Public Interface Iface1
    Default Property prop(ByVal arg As Integer) As Integer
End Interface
Public Interface Iface2
    Default Property prop(ByVal arg As Integer) As Integer
End Interface
Public Interface Iface3
    Inherits Iface1, Iface2
End Interface
Public Class testClass
    Public Sub accessDefaultProperty()
        Dim testObj As Iface3
        Dim testInt As Integer = testObj(1)
    End Sub
End Class

Lorsque vous spécifiez testObj(1), le compilateur tente de le résoudre en propriété par défaut. Toutefois, puisqu'il existe deux propriétés par défaut possibles en raison des interfaces héritées, le compilateur signale cette erreur.

ID d'erreur : BC30686

Pour corriger cette erreur

  • Évitez d'hériter des membres avec le même nom. Dans l'exemple précédent, si testObj n'a pas besoin, par exemple, des membres de Iface2, déclarez-le comme suit :

            Dim testObj As Iface1
    

    ou

  • Implémentez l'interface qui hérite dans une classe. Vous pouvez ensuite implémenter chacune des propriétés héritées avec des noms différents. Toutefois, seule l'une d'entre elles peut être la propriété par défaut de la classe d'implémentation. L'exemple suivant illustre ce comportement :

    Public Class useIface3
        Implements Iface3
        Default Public Property prop1(ByVal arg As Integer) As Integer Implements Iface1.prop
            ' Insert code to define Get and Set procedures for prop1.
        End Property
        Public Property prop2(ByVal arg As Integer) As Integer Implements Iface2.prop
            ' Insert code to define Get and Set procedures for prop2.
        End Property
    End Class
    

Voir aussi

Autres ressources

Interfaces (Visual Basic)