2010-07-24 116 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