title: Why is generic EventHandler<TArgs> so under-used?
body: <p>.NET 2.0 added the <code>EventHandler&lt;TArgs&gt;</code> generic delegate type to simplify the process of writing custom events; instead of having to define an <code>EventArgs</code> class and its corresponding delegate (e.g. <code>MyEventArgs</code> and <code>MyEventHandler</code>), you need only write the args class.</p>
  
  <p>Bearing that in mind, why does this delegate type appear almost nowhere in the .NET Framework? I know that most of the core APIs were developed before generics were introduced, but even in new parts of the framework like WPF, they have opted for explicitly defining delegate types; e.g. <code>RoutedEventHandler</code> instead of <code>EventHandler&lt;RoutedEventArgs&gt;</code>.</p>
  
  <p>Is there something inherently wrong with the generic event handler delegate? I often make use of it and I worry that my code appears very out of place when compared to built-in classes.</p>