ho una classe di base che contiene i seguenti eventi:C#: generazione di un evento ereditato
public event EventHandler Loading;
public event EventHandler Finished;
in una classe che eredita da questa classe di base provo a generare l'evento:
this.Loading(this, new EventHandler()); // All we care about is which object is loading.
ricevo il seguente errore:
l'evento 'BaseClass.Loading' possono essere visualizzati solo sul lato sinistro del + = o - = (BaseClass')
Suppongo che non possa accedere a questi eventi come gli altri membri ereditati?
Tali metodi dovrebbero essere protetti virtuale a meno che non ci sia una ragione per fare altrimenti. –
Perché dovrebbe essere virtuale? Lo dichiarerei virtuale se volessi che gli eredi cambino il modo in cui l'evento dovrebbe essere sollevato, ma la maggior parte delle volte non vedo alcun motivo per farlo ... –
Secondo le linee guida Microsoft dice che dovrebbe essere virtuale in modo che gli ereditari possano controllare il evento .. inoltre il metodo On protetto dovrebbe accettare gli event arg, non crearli autonomamente. Questa risposta è sbagliata rispetto a quella corretta di Adam Robinson. – meandmycode