Covariance not working with delegates : <p>I am working on a project using <code>Microsoft Bot Builder</code>, but my question is not specific to that.</p>

<p>Microsoft Bot Builder has the following delegate</p>

<pre><code>WaterfallStep(DialogContext dc, IDictionary&lt;string, object&gt; args = null, SkipStepFunction next = null);
</code></pre>

<p>And my method's signature is </p>

<pre><code>async Task DidNotUnderstandQuery(DialogContext context, BotState state, SkipStepFunction next)
</code></pre>

<p>Notice the only difference is <code>BotState</code> parameter type which is defined as below</p>

<pre><code>class BotState : Dictionary&lt;string, object&gt;, IDictionary&lt;string, object&gt;
</code></pre>

<p>When I try to substitute my method where it is supposed to be a <code>WaterFallStep</code> I get the error saying the method does not match the delegate.</p>

<p>Why does Covariance not work with delegates?</p>
