event Action<> vs event EventHandler<>
<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>
