You definitely don't need your own delegate type โ you can use EventHandler<TEventArgs> , where TEventArgs is your specific EventArgs subclass.
Refactoring a big mess is always time consuming and annoying. If you switch to using method group transformations, this may make things easier in the future:
// This... foo.SomeEvent += new MyCustomEventHandler(SomeMethod); // becomes this.. foo.SomeEvent += SomeMethod;
Then, if the type of SomeEvent changes, you can change SomeMethod and the subscription will work, without the need to change it again.
If you need several different subtypes of EventArgs , thatโs another thing - and itโs impossible to say without knowing your specific situation. If you need to convey a large amount of information, this may make sense.
source share