title: Call generic method for subclass from generic method for superclass
body: <p>I have two classes: Superclass and derived Subclass:Superclass. I have a generic method:</p>
  
  <pre><code>public void DoSmth&lt;T&gt;(T obj)
      where T : Superclass
  {
      if(typeof(T).IsSubclassOf(typeof(Subclass))
      {
          DoSmth2&lt;T&gt;(obj);
      }
      //...
  }
  
  public void DoSmth2&lt;T&gt;(T obj)
      where T : Subclass
  { 
      //... 
  }
  </code></pre>
  
  <p>As you see I want to call generic method for Subclass from generic method for Superclass. But compiler says that I can't do that:</p>
  
  <pre><code>The type 'T' cannot be used as type parameter 
  'T' in the generic type or method 'DoSmth2&lt;T&gt;(T)'. 
  There is no implicit reference conversion from 'T' to 'Subclass'
  </code></pre>
  
  <p>I use .Net 3.5. I understand that I can't do that just like I wrote above but is there any way to do that?</p>