title: Cannot use polymorphism because of generic base class
body: <p>I create base generic class with no fields with just one method</p>
  
  <pre><code>public class Base&lt;T&gt; where T:class
  {
    public static T Create()
    {
       // create T somehow
    }
  }
  
  public class Derived1 : Base&lt;Derived1&gt;
  {
  }
  
  public class Derived2 : Base&lt;Derived2&gt;
  {
  }
  
  
  public class Program
  {
      bool SomeFunction()
      {
       // Here I need reference to base class
       Base baseref; // error here 
  
       switch(somecondition)
       {
         case 1:
          baseref = Derived1.Create();
         break;
  
         case 2:
          baseref = Derived1.Create();
         break
  
       }
  
       // pass baseref somewhere     
      }
  }
  </code></pre>
  
  <p>An obvious option would be converting base class to interface, but this is not possible because interface cannot contain static methods.</p>
  
  <p>I think I need some intermediate base class. Please suggest</p>