Winform

LINQ anche per lo strato di presentazione

Quello che emerge da quanto visto al TechEd è che LINQ non è una feature di C# 3.0 che serve solo per lo strato di accesso ai dati.Di seguito un piccolo esempio in cui LINQ semplifica di parecchio il nostro codice anche nello strato di presentazione. Prendiamo per esempio un dominio in cui ogni User appartiene ad un Group:0:          public class User1:          {2:             public int ID {get;set; }3:             public string Name {get;set; }4:             public string Telephone { get; set; }5:             public Group Group { get; set; }6:          }7:          public class Group8:          {9:             public string Name { get; set; }10:         } quindi con un mettodo LoadUsers() abbiamo una lista...

Pattern MVP: usare una classe base per ottimizzare il test dei Presenter

In questo ultimo periodo ho usato molto il pattern ModelViewPresenter. Per scrivere le mie triadi MVP ho utilizzato la tecnica del presenter first con ottimi risultati. All'interno dei miei unit-test ho fatto ampio uso di Mock Objects ed ho notato una certa ripetitività nel codice prodotto, soprattutto nei metodi di Setup e di TearDown. Con una soluzione simili a quella usata per il refactoring del presenter, ho usato i generics ed una classe base per evitarmi inutili ripetizioni. Vediamo un esempio concreto. Di seguito un presenter con la sua View ed il suo Model     public interface IMyView     {       void ShowLoggedUser(string s);    }   public interface IMyModel   ...

Pattern MVP: usare una classe base per ottimizzare i Presenter

In questo periodo ho scritto molto codice che usa il pattern MVP ed ho notato che il costruttore di un presenter fa bene o male fa quattro operazioni fondamentali: riceve riferimento ad un'instanza della view  controlla che la view non sia null riceve riferimento ad un'instanza del model controlla che il model non sia null Con una sintassi simile a questa: public class MyPresenter    {       private readonly IMyModel _model;       private readonly IMyView _view;       public MyPresenter(IMyView view,IMyModel model)        {           if (view ==null)               throw new ArgumentNullException("view");           if (model ==null)               throw new ArgumentNullException("model");            _model = model;            _view = view;        }    }/p>   In un progetto mediamente complesso capita di...

Koders Visual Studio Plug-in

Spesso la miglior documentazione per una classe o un metodo sono un esempio pratico di utilizzo concreto della stessa. Per cercare esempi di codice oggi possiamo usare molti motori di ricerca specializzati in questo compito. Per i più pigri segnalo questo plug-in per VisualStudio (sia 2003 che 2005) che permette di effettuare le ricerche nel database di Koders.com e di visulizzare i risultati rimanendo all'interno dell'ambiente di sviluppo.

MVP: Comunicazione tra Presenter e View

In questo periodo sto dedicando un po' di tempo all'approfondimento del pattern MVP e delle sue sfumature. Spesso quando devo scrivere il presenter mi chiedo in che modo questo debba dialogare con una view: ovvero se tramite metodi pubblici sul presenter chiamati dalla view oppure eventi sulla view sottoscritti dal presenter. Gli autori di questo articolo a cui sono giunto grazie a questo post di Antonio suggerisco questo approccio: Communication with the presenter is made possible by the use of an event subsystem to loosely couple the model and view to the presenter. The most common case is for the view to fire events...