2017-06-07 33 views
1

到目前为止,我曾在VB.NET只读属性作为在VB.NET中使用受保护的setter自动实现的属性?

Public ReadOnly Property Username() As String 

现在我需要改变我的代码作为二传手这个属性需要被保护。在C#中我会做:

public string Username {get; protected set;} 

但在VB.NET我找不到这么短的手,好看的解决方案。 VB.NET是否提供了这个功能,但我不知道这一点?或者我必须编写这么多的代码,并使它看起来不那么丑陋?

Public Property Username() As String 
    Get 
     Return m_Username 
    End Get 
    Protected Set 
     m_Username = Value 
    End Set 
End Property 
Private m_Username As String 

如果我有20个属性并将它们设置为这样,它会使我的类变得很脏。

回答

0

你可以使你的代码短一点做这样的:

Protected _username As String 

Public ReadOnly Property Username As String 
    Get 
     Return _username 
    End Get 
End Property 

这样,你可以在继承这个类的类通过_username设置的用户名。

+0

不幸的是,这不允许在属性设置器中使用其他逻辑,例如引发INotifyPropertyChanged事件。可以实现一个专门用于设置值的单独方法,该方法也可以处理该逻辑,但是该方法可以声明为受保护的,而_username可以是私有的。 –