Compartir a través de


BC30686: el acceso a las propiedades predeterminadas es ambiguo entre los miembros de interfaz heredados '<defaultpropertyname>' de la interfaz '<interfacename1>' y '<defaultpropertyname>' de la interfaz '<interfacename2>'

Una interfaz hereda de dos interfaces, cada una de las cuales declara una propiedad predeterminada con el mismo nombre. El compilador no puede resolver un acceso a esta propiedad predeterminada sin cualificación. Esto se ilustra en el siguiente ejemplo:

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

Cuando se especifica testObj(1), el compilador intenta resolverlo en la propiedad predeterminada. Sin embargo, hay dos posibles propiedades predeterminadas debido a las interfaces heredadas, por lo que el compilador indica este error.

Identificador de error: BC30686

Para corregir este error

  • Evite heredar los miembros con el mismo nombre. En el ejemplo anterior, si testObj no necesita ninguno de los miembros de , por ejemplo, Iface2, declare como se indica a continuación:

    Dim testObj As Iface1
    

    -o-

  • Implemente la interfaz heredada en una clase . A continuación, puede implementar cada una de las propiedades heredadas con nombres diferentes. Sin embargo, solo una de ellas puede ser la propiedad predeterminada de la clase de implementación. Esto se ilustra en el siguiente ejemplo:

    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
    

Consulte también