Crad's .NET Blog

L'UGIblog di Marco De Sanctis
posts - 190, comments - 457, trackbacks - 70

Automatic Properties di C# 3.0: servono davvero?

C# 3.0 permette una notazione compatta per le proprietà che si limitano semplicemente a wrappare un corrispondente field:

   1:  public string Descrizione { get; set; }

Sulle prime mi è sembrata un'innovazione piuttosto utile, se non altro per le entity di dominio, che notoriamente non hanno logica e che risultano essere parecchio più veloci da scrivere e leggibili. Così utili che ho anche realizzato un accessor per farle supportare da NHibernate (lo trovate qui).

Poi ho iniziato a sperimentare un po' e... beh... mi convincono fino ad un certo punto. Perchè? Beh, ovviamente devono avere sia il getter che il setter, quindi niente proprietà readonly per le collection, tanto per dirne una, a meno di non definire il set come privato. Ma farlo vuol dire inizializzare la proprietà nel costruttore. Quindi ciò che prima era così

   1:  private IList<Dettaglio> dettagli = new List<Dettaglio>();
   2:  public IList<Dettaglio> Dettagli
   3:  {
   4:      get { return dettagli; }
   5:  }

ora diviene così

   1:  public IList<Dettaglio> Dettagli { get; private set; }
   2:  public MyClass()
   3:  {
   4:      this.Dettagli = new List<Dettaglio>();
   5:  }

Non un gran guadagno, isn't it? E perché non usare solo per queste proprietà la sintassi classica? Risposta semplice: solitamente (è noto) uso NHibernate e non mi piace l'idea di dover utilizzare due strategy diverse per accedere ai field sottostanti.

Mettiamola così: magari più in là cambierò idea, ma ora come ora preferisco la strategia dell'ottimo Reshareper, che mi permette di fare qualcosa del tipo (tratto dalla trial della versione 3.0)...

image image

image

 

Technorati tags:

Print | posted on giovedì 9 agosto 2007 01:47 | Filed Under [ NHibernate Visual Studio Misc ]

Powered by:
Powered By Subtext Powered By ASP.NET