Witam! Czytając kod naszych zagranicznych kolegów zauważyłem, że:
Powiedzmy w klasie Client.cs jest taki kod:
public event CommandsEvents.CommandReceivedHandler CommandReceived;
gdzieś dalej:
protected virtual void OnCommandReceived(CommandEventArgs e)
{
if (CommandReceived != null)
{
CommandReceived(this, e);
}
}
}
a później w funkcji odbierania wiadomości po odebraniu wiadomości wywołane jest:
OnCommandReceived(this, cmdEvArg)
Następnie w innej klasie, która korzysta z klasy Client.cs
mamy przypisanie handler'a do event'u powiedzmy, że:
client.CommandReceived += new CommandEvents.CommandReceivedHanlder(CommandReceived_Handler);
i funkcja CommandReceived_Handler jest prywatna.
Teraz moje pytania:1. czy ten kod jest poprawny? 2. Po co robić OnCommandReceived virtualne skoro tam i tak jest tylko sprawdzanie eventu i jego odpalenie(ktoś mogłby ją nadpisać i event wgl by nie odpalił? 3. I to nie jest handler tego event'u? ( 4. handler to ta funkcja, która dla eventu jest odpalana)? 5. Czy funkcja CommandReceived_Handler nie powinna być własnie virtualna? Żeby klasa po niej dziedzicząca mogła zmienić co chce w niej zrobić? Chyba, że wykluczamy późniejsze użycie tak ? Z góry dziękuję za odpowiedź!