Der Standardeigenschaftenzugriff ist nicht eindeutig. Es kann sich um den geerbten Schnittstellenmember '<Standardeigenschaftenname>' der Schnittstelle '<Schnittstellenname1>' oder '<Standardeigenschaftenname>' der Schnittstelle '<Schnittstellenname2>' handeln

Aktualisiert: November 2007

Default property access is ambiguous between the inherited interface members '<defaultpropertyname>' of interface '<interfacename1>' and '<defaultpropertyname>' of interface '<interfacename2>'

Eine Schnittstelle erbt von zwei Schnittstellen, von denen jede eine Standardeigenschaft mit dem gleichen Namen deklariert. Der Compiler kann einen Zugriff auf diese Standardeigenschaft ohne Qualifikation nicht auflösen. Dies wird anhand des folgenden Beispiels veranschaulicht:

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

Wenn Sie testObj(1) angeben, versucht der Compiler, es in die Standardeigenschaft aufzulösen. Aufgrund der geerbten Schnittstellen gibt es jedoch zwei mögliche Standardeigenschaften. Der Compiler signalisiert deshalb diesen Fehler.

Fehler-ID: BC30686

So beheben Sie diesen Fehler

  • Vermeiden Sie das Vererben von Membern mit dem gleichen Namen. Wenn testObj im obigen Beispiel keinen der Member beispielsweise von Iface2 benötigt, deklarieren Sie es folgendermaßen:

            Dim testObj As Iface1
    

    - oder -

  • Implementieren Sie die erbende Schnittstelle in einer Klasse. Anschließend können Sie jede der geerbten Eigenschaften mit unterschiedlichen Namen implementieren. Allerdings kann nur eine Eigenschaft die Standardeigenschaft der implementierenden Klasse sein. Dies wird anhand des folgenden Beispiels veranschaulicht:

    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
    

Siehe auch

Konzepte

Übersicht über Schnittstellen

Standardeigenschaften