La clase VB.NET hereda una clase base e implementa un problema de interfaz (funciona en C #)
Estoy tratando de crear una clase en VB.NET que hereda una clase abstracta base y también implementa una interfaz. La interfaz declara una propiedad de cadena llamada Descripción. La clase base contiene una propiedad de cadena llamada Descripción. La clase principal hereda la clase base e implementa la interfaz. La existencia de la propiedad Descripción en la clase base cumple los requisitos de la interfaz. Esto funciona bien en C # pero causa problemas en VB.NET.
Primero, aquí hay un ejemplo del código C # que funciona:
public interface IFoo
{
string Description { get; set; }
}
public abstract class FooBase
{
public string Description { get; set; }
}
public class MyFoo : FooBase, IFoo
{
}
Ahora aquí está la versión VB.NET que da un error de compilación:
Public Interface IFoo
Property Description() As String
End Interface
Public MustInherit Class FooBase
Private _Description As String
Public Property Description() As String
Get
Return _Description
End Get
Set(ByVal value As String)
_Description = value
End Set
End Property
End Class
Public Class MyFoo
Inherits FooBase
Implements IFoo
End Class
Si hago la clase base (FooBase
) implementa la interfaz y agrega elImplements IFoo.Description
para la propiedad todo está bien, pero no quiero que la clase base implemente la interfaz.
El error del compilador es:
La clase 'MyFoo' debe implementar 'Descripción de la propiedad () como cadena' para la interfaz 'IFoo'. La propiedad de implementación debe tener especificadores coincidentes 'ReadOnly' o 'WriteOnly'.
¿Puede VB.NET no manejar esto, o necesito cambiar mi sintaxis en algún lugar para que esto funcione?