The classic general C# event has these parameters:
(object sender, EventArgs e)
I can implement an event with a more specific signature for the e argument, deriving for EventArgs.
Now, what's the purpose of a base class like EventArgs? I mean... it's empty. No base/abstract/virtual properties, nor fields, or something else.
Why the parameters of a basic event aren't just like below?
(object sender, object eventArgs)
That is, why all the event with some implemented and specific event-args parameter derive it from EventArgs and not from a simple object?
The above question is mirrored with the following one. The event delegate in the generic form is:
delegate void EventHandler<TEventArgs>(object sender, TEventArgs e)
and no restrictions are put on the parameter e. But I would have expected something like where TEventArgs : EventArgs, to be coherent...