Boiler plate code replacement – is there anything bad about this code?
This is good stuff. Make them extension methods though to clean up your code a little more. For example: //Replaces OnMyEventRaised boiler-plate code //Usage: SafeInvoker.RaiseEvent(this, MyEventRaised) public static void Raise(this EventHandler eventToRaise, object sender) { EventHandler eventHandler = eventToRaise; if (eventHandler != null) eventHandler(sender, EventArgs.Empty); } Now on your events you can call: myEvent.Raise(this);