BC30686: Az alapértelmezett tulajdonsághozzáférés nem egyértelmű az interfész "interfacename1" és "defaultpropertyname>><"< interfész "interfacename2>" örökölt tagjai< között<>

A felület két illesztőtől öröklődik, amelyek mindegyike egy azonos nevű alapértelmezett tulajdonságot deklarál. A fordító nem tudja feloldani az alapértelmezett tulajdonsághoz való hozzáférést minősítés nélkül. Az alábbi példa ezt szemlélteti.

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

Amikor megadja testObj(1), a fordító megpróbálja feloldani az alapértelmezett tulajdonságra. Az örökölt interfészek miatt azonban két lehetséges alapértelmezett tulajdonság létezik, ezért a fordító jelzi ezt a hibát.

Hibaazonosító: BC30686

A hiba kijavítása

  • Kerülje az azonos nevű tagok öröklését. Az előző példában, ha testObj nincs szüksége például a tagok egyikére sem, Iface2akkor a következőképpen deklarálja azt:

    Dim testObj As Iface1
    

    -vagy-

  • Implementálja az öröklő felületet egy osztályban. Ezután implementálhatja az örökölt tulajdonságokat különböző névvel. A implementálási osztály alapértelmezett tulajdonsága azonban csak az egyik lehet. Az alábbi példa ezt szemlélteti.

    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
    

Lásd még