title: C# function call with multiple generic types
body: <p>I know that I can call a generic extension method </p>
  
  <pre><code>public static object Convert&lt;U&gt;(this U value) 
  </code></pre>
  
  <p>Like this (no <code>&lt;Class1&gt;</code> required):</p>
  
  <pre><code>Class1Instance.Convert()
  </code></pre>
  
  <p>But is there a way to call :</p>
  
  <pre><code>public static T Convert&lt;U, T&gt;(this U value) 
    where T : Class1, Interface1, new()
    where U : Class1, Interface2, new()
  {
    /******/
  }
  </code></pre>
  
  <p>With <code>Class1Instance.Convert&lt;Class2&gt;()</code> "only", instead of <code>Class1Instance.Convert&lt;Class1, Class2&gt;()</code></p>
  
  <p>Thanks,</p>
  
  <p><strong>EDIT :</strong></p>
  
  <p>Reformulation / simplification : 
  Is there a way to have  :</p>
  
  <pre><code>Result result = Convert&lt;Result&gt;(input); 
  </code></pre>
  
  <p>Where we know input of type Input, instead of having to say </p>
  
  <pre><code>Result result = Convert&lt;Input, Result&gt;(input)
  </code></pre>
  
  <p>With an extension method which looks like this :</p>
  
  <pre><code>static TResult Convert&lt;TResult, TInput&gt;(this TInput Input)
  </code></pre>