SILVERLIGHT
My adventures in the SILVERLIGHT world
Se utilizzate AutoMapper per creare Dto da oggetti letti con Nhibernate e lazy-loading attivo, è possibile che otteniate un’eccezione di tipo ObjectDisposedException, in quanto Automapper accede a proprietà “Lazy”, ma la sessione è già stata chiusa e distrutta. Per risolverlo, basta implementare un Custom Resolver, che tornerà null qualora il tipo della proprietà che sto provando a mappare sia un proxy non inizializzato. Ecco quindi il codice: public class NhProxyResolver : ValueResolver<object, object> { protected override object ResolveCore(object source) { return NHibernateUtil.IsInitialized(source) ? source : null; } } ...
Ultimamente, in una applicazione WPF, sto utilizzando pesantemente Automapper per convertire dei DTO, ritornati da un servizio , in ViewModel.
Per chi non lo conoscesse questa libreria permette di mappare, in base a convenzioni, un oggetto in un altro .
Detto cosi sembra banale e quasi inutile, in realtà se leggete la documentazione e fate qualche test capirete che offre un sacco di funzionalità e vi tornerà utile in moltissimi casi, tra cui quello che da il titolo a questo post.
Inoltre, essendo estramemente versatile, possiamo anche creare regole custom per mappare gli oggetti o definire eccezioni in questo modo:
...
Che il vostro progetto sia sviluppato in WPF, Silverlight o Silverlight per WP7 un aspetto fondamentale (direi quasi un requisito non funzionale) da soddisfare è il supporto ai designer di Visual Studio/Blend, identificato con il termine “Blendability”. Anche se può sembrare banale, in realtà la faccenda si complica man mano che i nostri ViewModel prendono forma e utilizziamo IoC. In soldoni il Designer non è in grado di rappresentare graficamente una View collegata ad un ViewModel di questo tipo: public MainViewModel(IPersonService personService) { People = new ObservableCollection<Person>(personService.GetAll()); ShowPersonDetailCommand = new RelayCommand(PerformShowPersonDetail, CanShowPersonDetail);...