Uso di IList...a prescindere da NHibernate

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...:-))

Print | posted on mercoledì 14 giugno 2006 16:34

Comments on this post

# re: Uso di IList...a prescindere da NHibernate

Requesting Gravatar...
Ciao Giancarlo,

[cit]L'uso di IList in luogo di List<T> dovrebbe essere messo tra i comandamenti...e non considerato come una costrizione...[cit]

Pienamente daccordo! credo di non essermi spiegato bene nel commento che ho fatto al <a href="http://blogs.ugidotnet.org/idamiani/archive/2006/06/13/42781.aspx">post </a>di Igor oppure ho capito male il tuo post (a pensarci bene non ci faccio una gran figura....sembra che non capisca un tubo e mi sappia spiegare come un troglodita :D).

(Anyway) La mia riflessione nasceva dal fatto ke invece di estendere BindingList, Igor aveva implementato direttamente IList (tra l'altro già implementata da BindingList). Questo per sopperire ad un'esigenza di NHibernate. E' questo comportamento che non mi sembra corretto poichè rischia di deviare lo sviluppo dell'applicazione in maniera anche significativa rispetto agli obiettivi che avrebbero dovuto essere fissati durante la fase di design dell'applicazione.

Nel caso specifico di Igor, se non ho inteso male, la sua applicazione dovrebbe avere un front-end WinForm e quindi per supportare il binding avanzato dovrebbe estendere BindingList.

In ogni caso non mi è chiaro come mai NHibernate non funzioni con una collection che estende BindingList visto ke a sua volta implementa IList e quindi è possibile effettuare un cast a IList, ma questa penso sia una questione che riguarda NHibernate.
Left by Alessandro Di Noia on giu 14, 2006 5:13

# re: Uso di IList...a prescindere da NHibernate

Requesting Gravatar...
Mannaggia a queste teconologie moderne!!!! ;P manco scrivere un link in un post!!!!
Vabbè spero cmq che mi abbiate capito ;) in ogno modo il link era http://blogs.ugidotnet.org/idamiani/archive/2006/06/13/42781.aspx

PS:
come si fa a mettere un link nei commenti senza ke appaia l'URL
Left by Alessandro Di Noia on giu 14, 2006 5:22
Comments have been closed on this topic.