Класс VB.NET наследует базовый класс и реализует проблему интерфейса (работает в C #)
Я пытаюсь создать класс в VB.NET, который наследует базовый абстрактный класс, а также реализует интерфейс. Интерфейс объявляет строковое свойство с именем Description. Базовый класс содержит строковое свойство с именем Description. Основной класс наследует базовый класс и реализует интерфейс. Существование свойства Description в базовом классе удовлетворяет требованиям интерфейса. Это отлично работает в C #, но вызывает проблемы в VB.NET.
Во-первых, вот пример кода на C #, который работает:
public interface IFoo
{
string Description { get; set; }
}
public abstract class FooBase
{
public string Description { get; set; }
}
public class MyFoo : FooBase, IFoo
{
}
Теперь вот версия VB.NET, которая выдает ошибку компилятора:
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
Если я сделаю базовый класс (FooBase
) реализовать интерфейс и добавитьImplements IFoo.Description
со свойством все хорошо, но я не хочу, чтобы базовый класс реализовывал интерфейс.
Ошибка компилятора:
Класс «MyFoo» должен реализовывать «Property Description () As String» для интерфейса «IFoo». Реализующее свойство должно иметь соответствующие спецификаторы ReadOnly или WriteOnly.
Может ли VB.NET не справиться с этим, или мне нужно где-то изменить свой синтаксис, чтобы заставить это работать?