Una interessante feature inserita in Visual Studio 2010 è quella (già esistente nel linguaggio C# in Visual Studio 2008) di poter definire in maniera compatta quelle proprietà di tipo”standard” (cioè con setter e getter standard).
Nelle precedenti versioni di Visual Studio avremmo dovuto scrivere:
Private _FirstName As String
Public Property FirstName As String
Get
Return Me._FirstName
End Get
Set(ByVal value As String)
Me._FirstName = value
End Set
End Property
Attualmente, In Visual Studio 2010, possiamo scrivere:
Public Property FirstName As String
Con un notevole risparmio di tempo e leggibilità del codice.
Ma cosa succede dietro le quinte nel momento in cui compiliamo una classe con le proprietà definite in questo modo?
Supponiamo di avere la semplice classe:
Public Class Person
Public Property FirstName As String
Public Property LastName As String
End Class
Se apriamo l’assembly generato dalla compilazione con uno strumento che ci consente di vedere cosa viene generato come, ad esempio Reflector di Red Gate, osserviamo:
Come possiamo vedere, il compilatore ha generato la proprietà in maniera molto simile a come l’avremmo implementata noi.
Unica differenza è la presenza dell’attributo CompilerGeneratedAttribute che indica il fatto che l’attributo privato è stato generato dal compilatore e non scritto dall’utente.
Possiamo utilizzare l'attributo CompilerGeneratedAttribute per determinare se un membro di una classe è stato aggiunto da un compilatore oppure è stato inserito dallo sviluppatore.
Questo attributo è presente nel framework fin dalla versione 2.0.
Commenti