Я пытаюсь создать класс в VB.NET, который наследует базовый абстрактный класс, а также реализует интерфейс. Интерфейс объявляет свойство string, называемое Описание. Базовый класс содержит свойство string, называемое Описание. Основной класс наследует базовый класс и реализует интерфейс. Существование свойства Description в базовом классе соответствует требованиям интерфейса. Это отлично работает на С#, но вызывает проблемы в VB.NET.
Во-первых, вот пример кода С#, который работает:
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 не обрабатывать это, или мне нужно изменить синтаксис где-нибудь, чтобы заставить это работать?