2017-06-07 2 views
1

Jusqu'à présent, j'avais une propriété en lecture seule dans VB.NET commePropriété implémentée automatiquement dans VB.NET avec un setter protégé?

Public ReadOnly Property Username() As String 

Maintenant, je dois apporter des modifications à mon code comme le poseur de cette propriété doit être protégée. En C# je l'aurais fait:

public string Username {get; protected set;} 

Mais je ne peux pas trouver une main courte et d'une solution de bonne mine en VB.NET. VB.NET fournit-il cela et je ne suis pas au courant de cela? Ou dois-je écrire autant de code et le rendre un peu plus laid?

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 

Ça va rendre ma classe si sale si j'avais 20 propriétés et les définir comme ça.

Répondre

0

Vous pouvez rendre votre code un peu plus court en faisant comme ceci:

Protected _username As String 

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

De cette façon, vous pouvez définir le nom d'utilisateur par le biais _username dans les classes héritant de cette classe.

+0

Malheureusement, cela ne permettrait pas une logique supplémentaire dans le setter de propriété, par exemple pour des événements de collecte INotifyPropertyChanged. Une méthode séparée dédiée à la définition de la valeur pourrait être implémentée, qui gère également cette logique, mais la méthode pourrait être déclarée protégée et '_username' pourrait être privé. –