Mam klasy bazowej, która zawiera następujące zdarzenia:C#: Podnoszenie odziedziczony zdarzenie
public event EventHandler Loading;
public event EventHandler Finished;
w klasie, która dziedziczy z tej klasy bazowej próbuję podnieść zdarzenie:
this.Loading(this, new EventHandler()); // All we care about is which object is loading.
I pojawia się następujący błąd:
zdarzenie „BaseClass.Loading” może pojawić się tylko po stronie lewej lub + = - = (klasy bazowej)
Zakładam, że nie mogę uzyskać dostępu do tych wydarzeń tak samo jak inni dziedziczeni członkowie?
Metody te powinny być chronione wirtualne chyba że istnieje jakiś powód, aby zrobić inaczej. –
Dlaczego powinien być wirtualny? Powiedziałbym, że jest to wirtualne, jeśli chciałbym, aby spadkobiercy zmienili sposób, w jaki wydarzenie powinno zostać podniesione, ale w większości przypadków nie widzę powodu, aby to robić ... –
Według wytycznych Microsoft powinno być wirtualne, aby dziedziczenie mogło kontrolować event .. dodatkowo metoda On protected powinna brać argumenty zdarzeń, a nie tworzyć ich samodzielnie. Ta odpowiedź jest błędna w porównaniu z poprawną przez Adama Robinsona. – meandmycode