Generic type of a class cannot accept generic type of derived type of the class
<blockquote>
  <p><strong>Possible Duplicate:</strong><br>
  <a href="http://stackoverflow.com/questions/3720751/casting-list-of-derived-class-to-list-of-base-class">Casting List&lt;&gt; of Derived class to List&lt;&gt; of base class</a>  </p>
</blockquote>



<p>The title may not make good sense. See the code:</p>

<pre><code>class Person {}

class Manager : Person {}

class PaymentCalculator&lt;T&gt; where T : Person
{
    public double Calculate(T person)
    {
        return 0;    // calculate and return
    }
}

class Calculators : List&lt;PaymentCalculator&lt;Person&gt;&gt;
{
    public Calculators()
    {
        this.Add(new PaymentCalculator&lt;Person&gt;());
        this.Add(new PaymentCalculator&lt;Manager&gt;());     // this doesn't work

        PassCalculator(new PaymentCalculator&lt;Person&gt;());
        PassCalculator(new PaymentCalculator&lt;Manager&gt;());   // this doesn't work
    }

    public void PassCalculator(PaymentCalculator&lt;Person&gt; x)
    { }
}
</code></pre>

<p>The two lines in the code marked as "this doesn't work" won't compile.</p>

<p>I can work around the issue, but it doesn't seem my intent is wrong. Or, is it?</p>
