Dopo aver letto il post di Igor (su NHibernate) e soprattutto il commento di Alessandro, posto qui i miei pensieri sull'uso delle interfacce e collezioni sul proprio domain model
Mi ricordo che molti mi muovevano la critica che con NHibernate si ha la necessità di usare delle interfacce in luogo di collezioni concrete (generiche o non), vedi
IList o IDictionary.
Io dico...
L'uso di
IList<T> in luogo di
List<T> dovrebbe
essere messo tra i
comandamenti...e non considerato come una
costrizione...
Questo perchè un oggetto "dovrebbe" sempre essere prodotto da una
factory
che oltre alla costruzione dell'oggetto principale,
inietti tutte
le
dipendenze (collaborators) del caso, in questo caso proprio
le collezioni (possibilmente a seconda di una configurazione esterna non cablata
nel codice).
Un risultato di questa semplice modalità di lavoro?
Nel mapping di NHibernate nella definizione della collection, basta inserire la
clausola order-by, e a runtime mi viene piazzata una sortedList in luogo di una
Lista non ordinata. L'entity non lo sa e usa la collezione sempre e solo tramite
l'interfaccia.
Si chiama
polimorfismo con i fiocchi.
Il resto è vero.
NHibernate quando costruisce una entity lavora "solo" con le interfacce. In una
parola:
Sacro.
Imho (ma mica tanto...:-))