Combining delegates and contravariance
<p>The article states the following: <a href="http://msdn.microsoft.com/en-us/library/dd799517.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/dd799517.aspx</a></p>

<p>Variance does not apply to delegate combination. That is, given two delegates of types <code>Action&lt;Derived&gt;</code> and <code>Action&lt;Base&gt;</code> (<code>Action(Of Derived)</code> and <code>Action(Of Base)</code> in Visual Basic), you cannot combine the second delegate with the first although the result would be type safe. Variance allows the second delegate to be assigned to a variable of type <code>Action&lt;Derived&gt;</code>, but delegates can combine only if their types match exactly. </p>

<pre><code>Action&lt;B&gt; baction = (taret) =&gt; { Console.WriteLine(taret.GetType().Name); };
Action&lt;D&gt; daction = baction;
Action&lt;D&gt; caction = baction + daction;
</code></pre>

<p>In the above code <code>baction</code> and <code>daction</code> take different parameters. But still I am able to combine them.
What am I missing?</p>

<p>TIA.</p>
