Property Automatiche in c# 3.0

Dalla sessione "C# 3 0 Future Directions in Language Innovation" di Anders Hejlsberg all'ultimo Tech-ed, si apprende che oltre alle tante novità, ci saranno anche delle property generate al volo che wrappano i campi privati.

In pratica una scrittura del genere:

public class Product { public string Name {get;set;} }

E' equivalente a questo:

public class Product { string name; public string Name { get { return name;} set { name = value; } } }

Sostenevo da anni che ci volesse un metodo di scrittura un po più smart per la definizione di tutte quelle property che non fanno altro che da "smart field". Su come si dovrebbero usare le property il cui unico scopo è wrappare l'accesso ai campi privati ne ho parlato nel mio webcast sul design idiomatico.

Queste property dovrebbero essere generate al volo dal compilatore, e non sarebbero quindi una funzione specifica del nuovo linguaggio. Tutto sommato va anche bene, l'importante è il risultato finale
E' vero che ci sono molti tool di refactoring che scrivono quella porzione di codice in automatico, ma qui si discute sul fatto che proprio quel codice (prodotto automaticamente o no) quando fa da accessor puro ad un campo privato, è cmq inutile e farraginoso per la gestione delle nostre classi.

E se lo dice il papà di c#...

Print | posted on venerdì 5 gennaio 2007 02:45

Comments on this post

# re: Property Automatiche in c# 3.0

Requesting Gravatar...
Andrea, in quel post parli di "sintassi" da adottare anche in c#, invece la strada di c# 3 è diversa...questa feature dovrebbe (se non ho capito male) essere del compilatore.
Il che rende la cosa probabilmente di più facile gestione.

Azzardo anche un'altra cosa:
INotifyPropertyChange e la notifica del cambiamento di una property è un'altra cosa che potrebbe essere risolta nello step di compilazione...
attendendo c# 4 io mi sono risolto la questione di INotify in AOP...
Left by Giancarlo Sudano on gen 05, 2007 2:30

# re: Property Automatiche in c# 3.0

Requesting Gravatar...
Ho visto solo adesso il post.
Concordo con Andrea quando dice: "continuo a pensare che la sintassi di C++/CLI sia più "parlante" di qlla proposta per C#3, troppo simile alla definizione di una proprietà in una interfaccia. De gustibus..." e anche a me piace molto la sintassi delle "trivial properties" di C++/CLI, pero' li' si sfrutta la parola chiave "property" che in C# manca.
Left by Adrian Florea on gen 09, 2007 6:32
Comments have been closed on this topic.