title: Child/Parent inheritance/casting and Generic type
body: <p>If I simply define the base class and inherited class this way</p>
  
  <pre><code>abstract class Base
  {
  }
  
  class Inherited : Base
  {
  }
  </code></pre>
  
  <p>I am free to use <code>Base a = new Inherited();</code> without any error.</p>
  
  <p>But if I have complicated base class with generic, for example see the code below:</p>
  
  <pre><code>abstract class AnotherBase&lt;TDetailType&gt; where TDetailType : AnotherDetail
  {
      public List&lt;TDetailType&gt; Children { get; set; }
  }
  
  abstract class AnotherDetail
  {
  }
  </code></pre>
  
  <p>And I have inherited classes</p>
  
  <pre><code>class AnotherInherited : AnotherBase&lt;AnotherInheritedDetail&gt;
  {
  }
  
  class AnotherInheritedDetail : AnotherDetail
  {
  }
  </code></pre>
  
  <p>Obviously I could not use the similar syntax any more <code>AnotherBase&lt;AnotherDetail&gt; b = new AnotherInherited();</code> because the compiler provides the error message</p>
  
  <blockquote>
    <p>Severity  Code    Description Project File    Line    Suppression State
    Error CS0029  Cannot implicitly convert type
    'ConsoleApplication3.AnotherInherited' to
    'ConsoleApplication3.AnotherBase'  ConsoleApplication3 c:\temp\ConsoleApplication3\ConsoleApplication3\Program.cs  15  Active</p>
  </blockquote>
  
  <p>Any suggestion how can I still use the base class to represent inherited classes under such circumstance?</p>