title: event Action<> vs event EventHandler<>
body: <p>Is there any different between declaring <code>event Action&lt;&gt;</code> and <code>event EventHandler&lt;&gt;</code>.</p>
  
  <p>Assuming it doesn't matter what object actually raised an event.</p>
  
  <p>for example:</p>
  
  <pre><code>public event Action&lt;bool, int, Blah&gt; DiagnosticsEvent;
  </code></pre>
  
  <p>vs</p>
  
  <pre><code>public event EventHandler&lt;DiagnosticsArgs&gt; DiagnosticsEvent;
  
  class DiagnosticsArgs : EventArgs
  {
      public DiagnosticsArgs(bool b, int i, Blah bl)
      {...}
      ...
  }
  </code></pre>
  
  <p>usage would be almost the same in both cases:</p>
  
  <pre><code>obj.DiagnosticsEvent += HandleDiagnosticsEvent;
  </code></pre>
  
  <p>There are several things that I don’t like about <code>event EventHandler&lt;&gt;</code> pattern:</p>
  
  <ul>
  <li>Extra type declaration derived from
  EventArgs</li>
  <li>Compulsory passing of object source –
  often no one cares</li>
  </ul>
  
  <p>More code means more code to maintain without any clear advantage.</p>
  
  <p>As a result, I prefer <code>event Action&lt;&gt;</code></p>
  
  <p>However, only if there are too many type arguments in Action&lt;>, then an extra class would be required.</p>