If I am an inheritor here, I won't be able to override it because it is not virtual, it is just protected. Virtual methods are also very expensive. Your inheritance design here is to allow access to dispatch on the delegate? The event is public, so an inheritor can already dispatch their own events if they create them. Your side, in the base class, should be encapsulated and not shared. I don't believe that this inheritance model is correct for a game environment. It would be more applicable to text processing application.