Diciamo che creo una classe astratta che gestisca alcune funzionalità di rete per me.
Voglio essere in grado di ricevere una notifica quando qualcosa cambia. Ad esempio: OnConnect
o OnDisconnect
.
Devo creare eventi per questi tipi di funzioni o implementarle come metodi astratti?
public event OnConnectDelegate OnConnected;
o
protected abstract OnConnected(SomeClientObject connectedClient);
Ho prototipato entrambe le soluzioni ed entrambe funzionano come previsto. Ma come faccio a sapere in generale se dovrei esporre la funzionalità come un evento o come un metodo astratto? Ci sono situazioni in cui dovrei preferire chiaramente l'una rispetto all'altra? Gli eventi supportano più ricevitori ma uno deve anche rimuoverli quando il ricevitore non ha più bisogno di riceverli.