Nel mio “approccio” a Silverlight sono cascato anche su Prism per una serie di buoni motivi tra cui:
  • il brand ha il suo peso :-);
  • il mio toolkit per UI Composition non è ancora Silverlight-enabled;
  • Scoprire cose nuove è sempre divertente;
Una cosa che mi è piacuta subito di Prism è la possibilità di caricare i plugin/moduli on-demand solo ed esclusivamente nel momento in cui serve, questo per Silverlight aggiunge il vantaggio che lo xap del modulo viene scaricato solo ed esclusivamente se necessario.
Il sistema è decisamente interessante anche se vi scontrate subito con un “paio” di problemi di design.
Avendo la possibilità di caricare moduli on-demand è sensato pensare che la UI debba dare feedback all’utente su quello che sta succedendo e sul perchè sta aspettando… ecco… questa cosa non è da farsi :-)
L’inghippo è che l’attore con cui avete a che fare, IModuleManager, non vi espone nessun evento relativo a quello che sta succedendo… la cosa bruttina, dal punto di vista del design, è che il primo tentativo che fate (che io ho fatto) è quello di ereditare dal ModuleManager di Prism e fare l’override di un paio di metodi per aggiungere gli eventi del caso… ciccia :-) tutto clamorosamente “private”, ma peccchèèè :-S
Alla fine l’unica opzione valida è quella di riscriversi complementamente il ModuleManager esponendo quello che vi serve e poi registrarlo dentro Unity al posto di quello di default.
Dimenticavo
rimpiazzare il FileDownloader non è una soluzione, perchè gli eventi che avete a disposizione sono troppo lontani da quello che serve a voi ;-)
Dimenticavo 2 :-)
ma… il “type forwarding”, cosa vitale a mio modo di vedere in un framework per IoC, in Unity?
Dimenticavo 3 :-P
la roba del load-on-demand me la scopiazzo alla grande :-P
.m