2011-03-09 20 views
9

que estoy recibiendo este error al intentar implementar una interfaz en vb.net:.net error: La implementación de propiedad debe tener juego 'sólo lectura' o 'especificadores WriteOnly'

Public Interface IFoo 
    ReadOnly Property Foo() As String 
End Interface 

Public Class myFoo 
    Implements IFoo 

    Public ReadOnly Property Foo() As String 
    Get 
     return "Foo" 
    End Get 
    End Property 
... 
End Class 

Lo que falta?

+1

Solo para informar C# puede hacer otras cosas http://stackoverflow.com/questions/6341184/why-cant-interface-readonly-properties-be-overriden-in-vb-net-when-it-is- válido – kbvishnu

Respuesta

19

Usted tendrá que decirle al código que la implementa el myFoo.FooIFoo.Foo (nótese la Implements IFoo.Foo añadido):

Public Interface IFoo 
    ReadOnly Property Foo() As String 
End Interface 

Public Class myFoo 
    Implements IFoo 

    Public ReadOnly Property Foo() As String Implements IFoo.Foo 
     Get 
      Return "Foo" 
     End Get 
    End Property 
End Class 

Por lo que yo sé, VB.NET no es compatible con las implementaciones de interfaz implícitas en la misma forma como C# lo hace.

+1

Me estaba volviendo loco con esto hasta encontrar su respuesta. ¡Gracias! – Michael

+0

Entonces, si la propiedad en la clase y la interfaz coinciden. no los une automáticamente entonces? – Steve

+0

@Steve: no, por lo que sé, VB no hará eso por usted; necesita indicar explícitamente que el miembro de tipo implementa un miembro de interfaz. –

Cuestiones relacionadas