Частный или защищенный набор для свойства MustOverride - PullRequest
3 голосов
/ 24 июля 2010

Я хотел бы иметь частный или защищенный «сеттер» для свойства, которое также является абстрактным (MustOverride). Я портирую некоторый код из C # в VB, и в C # это довольно просто. В VB не так много (для меня все равно).

Какой-то код ...

In C # ...

public abstract class BaseClassWithAnAbstractProperty
{
    public abstract int AnAbstractIntegerProperty { get; protected set; }
}

public class Foo : BaseClassWithAnAbstractProperty
{
    private int _anAbstractIntegerPropertyField = 0;

    public override int AnAbstractIntegerProperty 
    {
        get { return _anAbstractIntegerPropertyField; }
        protected set { _anAbstractIntegerPropertyField = value; }
    }
}

В VB ...

Public MustInherit Class BaseClassWithAnAbstractProperty

    Public MustOverride Property AnAbstractIntegerProperty() As Integer

End Class

Public Class Foo
    Inherits BaseClassWithAnAbstractProperty

    Private _anAbstractIntegerPropertyField As Integer


    Public Overrides Property AnAbstractIntegerProperty As Integer
        Get
            Return _anAbstractIntegerPropertyField 
        End Get
        Protected Set(ByVal value As Integer)
            _anAbstractIntegerPropertyField = value
        End Set
    End Property
End Class

Похоже, проблема заключается в невозможности конкретизировать особенности Get / Set в объявлении.

Я гоняюсь за призраком?

1 Ответ

2 голосов
/ 25 июля 2010

Для записи, ближайший перевод VB даст вам:

Public MustInherit Class BaseClassWithAnAbstractProperty

    Public ReadOnly MustOverride Property AnAbstractIntegerProperty() As Integer

End Class

Это может работать, но , как я выяснил , VB не поддерживает это для интерфейсов, по крайней мере

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...