开发者

Private or Protected Set for a MustOverride Property

开发者 https://www.devze.com 2023-01-08 13:06 出处:网络
I\'d like to have a Private or Protected \"Setter\" for a property that also happens to be an abstract (MustOverride). I\'m porting some code from C# to VB and in C# this is pretty straight forward. I

I'd like to have a Private or Protected "Setter" for a property that also happens to be an abstract (MustOverride). I'm porting some code from C# to VB and in C# this is pretty straight forward. In VB not so much (for me anyway).

Some code...

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; 开发者_运维知识库}
    }
}

In 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

The issue seems to be the inability to flesh-out the Get/Set specifics in the declaration.

Am I chasing a ghost?


For the record, the closest VB translation would give you:

Public MustInherit Class BaseClassWithAnAbstractProperty

    Public ReadOnly MustOverride Property AnAbstractIntegerProperty() As Integer

End Class

This might work, but as I found out, VB doesn't support this for Interfaces, at least

0

精彩评论

暂无评论...
验证码 换一张
取 消