Is è possibile delegare gli eventi da un'istanza di oggetto interno ai gestori di eventi dell'oggetto corrent con una sintassi simile a questo:È possibile "concatenare" EventHandlers in C#?
public class MyControl {
public event EventHandler Finish;
private Wizard wizard;
public MyControl(Wizard wizard) {
this.wizard = wizard;
// some other initialization going on here...
// THIS is what I want to do to chain events
this.wizard.Finish += Finish;
}
}
La motivazione per la struttura di cui sopra è che ho molti flussi di interfaccia utente wizard-like e voluto separare the Back, Forward & Annulla la gestione di una singola classe per rispettare il principio Open Closed e il principio di singola responsabilità nella mia progettazione.
Aggiungendo un metodo OnFinish e facendo il normale controllo è sempre possibile, ma nel caso in cui ci siano molti eventi annidati, finirà con il codice di lotto di codice.
Grazie, il ragionamento alla base della seconda opzione è sufficiente per implementare il sistema in questo modo. E grazie per la prima opzione anche perché non avevo capito che c'era una sintassi per l'overloading add. – plouh
Per curiosità, perché assegni Finish al gestore prima di eseguire il test di null e di invocare Finish? – dckrooney
@dcrooney: dovrebbe invece essere invocato il gestore. Modificherà. –