title: Derived type of generic base class
body: <p>I have the following code.</p>
  
  <pre><code>class Header&lt;T&gt; where T: IItem { }
  class HeaderA : Header&lt;ItemA&gt; { } 
  class HeaderB : Header&lt;ItemB&gt; { } 
  
  interface IItem { }
  class ItemA : IItem { }
  class ItemB : IItem { }
  
  Header&lt;IItem&gt; h = new HeaderA();
  </code></pre>
  
  <p>The last line cannot be compiled. </p>
  
  <blockquote>
  <pre><code>Cannot implicitly convert type 'UserQuery.HeaderA' to 'UserQuery.Header&lt;UserQuery.IItem&gt;'
  </code></pre>
  </blockquote>
  
  <p>HeaderA is a subtype of Header and ItemA is a subtype of IItem. Why it doesn't work?</p>