2010-07-24 71 views
3

我想要一个私有或受保护的“Setter”,这个属性也恰好是一个抽象(MustOverride)。我将一些代码从C#移植到VB,而在C#中,这非常简单。在VB中没有那么多(对我来说)。私人或受保护的MustOverride属性设置

一些代码...

在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 

的问题似乎无法肉出获取/在声明中设置细节。

我在追鬼吗?

+0

可能重复[在VB.Net保护设置在接口中定义的属性](http://support.microsoft.com/kb/252169/en-us-vb-net-for-a-property-defined-in-an-interface ) – 2010-07-24 20:17:09

+0

我不认为它是重复的。问题是不同的。恰巧,答案适用于这两个问题。 – 2010-07-24 20:51:58

回答

2

为了记录在案,最接近VB的翻译会给你:

Public MustInherit Class BaseClassWithAnAbstractProperty 

    Public ReadOnly MustOverride Property AnAbstractIntegerProperty() As Integer 

End Class 

威力工作,但as I found out,VB不支持此接口为,至少

+0

是的,我只是实际上复制/粘贴了你的一条评论。我正在努力工作。谢谢 – nullphonic 2010-07-24 20:23:27