private MailManager _mm; //proprietà di solo lettura di Fax public Fax(MailManager mm) { this._mm = mm; MailManagerEventHandler del = new MailManagerEventHandler(mm_MailArrived); //costruzione del delegate this._mm.MailArrived += del; //invoco add_MailArrived(del) }
public Printer(MailManager mm) { this._mm = mm; this._mm.MailArrived += _mm_MailArrived; //1) MailManagerEventHandler del = new MailManagerEventHandler(_mm_MailArrived); //2) this._mm.MailArrived += del; }
public Fax(MailManager mm) { this._mm = mm; MailManagerEventHandler del = new MailManagerEventHandler(mm_MailArrived); this._mm.MailArrived += del; // invoke add_MailArrived(del); }
static void Main(string[] args) { MailManager mm = new MailManager(); Fax fax = new Fax(mm); Printer prn = new Printer(mm); mm.SimulateMailArrived("topolino", "Minni", "Cena", "Usciamo stasera?"); mm.SimulateMailArrived("Minni", "topolino", "Cena", "No, non esco"); }
public Printer(MailManager mm) { this.mm = mm; this.mm.MailArrived += Mm_MailArrived; //questa è una facility sintattica che si può usare, il Delegate viene costruito automaticamente //avremmo potuto scrivere: //MailManagerEventHandler del = new MailManagerEventHandler(Mm_MailArrived); //this.mm.MailArrived += del; }
public Fax(MailManager mm) { //qui gli passo un'istanza di MailManager, che sarà la stessa che passerò sia a Fax che a Printer. this.mm = mm; //questo sarebbe l'"InitializeComponents" della Form //Così il Fax ha un riferimento a MailManager; poi si costruisce il metodo proprio di Fax, //e lo si mette dentro ad un delegate, il quale viene accodato alla lista dei Delegate dell'evento MailArrived di MailManager //tramite il += (che invoca Add_MailArrived, metodo generato dall'evento per aggiungere Delegate alla lista). MailManagerEventHandler del = new MailManagerEventHandler(mm_MailArrived); this.mm.MailArrived += del; }
static void Main(string[] args) { MailManager mm = new MailManager(); Fax fax = new Fax(mm); Printer prn = new Printer(mm); //abbiamo creato un MailManager e passato la stessa istanza ai costruttori di Fax e Print, che quindi //appiccicheranno i loro Delegate all'evento della stessa istanza mm. //così una volta sollevato l'evento di mm, si andranno ad eseguire i metodi di tutti i subscriber. mm.SimulateMailArrived("Agata", "Maurizio", "Call", "Fissiamo la chiamata per mercoledì alle 11"); mm.SimulateMailArrived("Guglielmo", "Maurizio", "Calcetto", "Stasera alle 18 partitella"); }
public Printer(MailManager mm) { this._mm = mm; this._mm.MailArrived += _mm_MailArrived; }