C #: zdarzenie z explicity dodaj / usuń! = Typowe zdarzenie?

Zadeklarowałem rodzajową obsługę zdarzeń

public delegate void EventHandler();

do którego dodałem metodę rozszerzenia „RaiseEvent”:

public static void RaiseEvent(this EventHandler self)        {
   if (self != null) self.Invoke();
}

Kiedy zdefiniuję zdarzenie przy użyciu typowej składni

public event EventHandler TypicalEvent;

wtedy mogę bez problemów wywoływać metodę rozszerzenia:

TypicalEvent.RaiseEvent();

Ale kiedy zdefiniuję zdarzenie za pomocą jawnej składni dodawania / usuwania

private EventHandler _explicitEvent;
public event EventHandler ExplicitEvent {
   add { _explicitEvent += value; } 
   remove { _explicitEvent -= value; }
}

następnie metoda rozszerzenia nie istnieje w zdarzeniu zdefiniowanym za pomocą jawnej składni dodawania / usuwania:

ExplicitEvent.RaiseEvent(); //RaiseEvent() does not exist on the event for some reason

A po najechaniu na zdarzenie, aby zobaczyć powód:

Zdarzenie „ExplicitEvent” może pojawić się tylko po lewej stronie + = lub - =

Dlaczego zdarzenie zdefiniowane przy użyciu typowej składni ma być inne niż zdarzenie zdefiniowane przy użyciu jawnej składni add / remove i dlaczego metody rozszerzenia nie działają na tym drugim?

EDYTUJ: Odkryłem, że mogę obejść to, używając bezpośrednio prywatnej procedury obsługi zdarzeń:

_explicitEvent.RaiseEvent();

Ale nadal nie rozumiem, dlaczego nie mogę użyć zdarzenia bezpośrednio, jak zdarzenia zdefiniowanego przy użyciu typowej składni. Może ktoś może mnie oświecić.

questionAnswers(4)

yourAnswerToTheQuestion