 <p>I believe there is no way to make it compile. You will have to use reflection to make the call.</p> <p>Actually. You could cheat if you contain it within a class:</p> <pre><code> public class Container&lt;T&gt; { public Container(T value) { Value = value; } public T Value { get; private set; } } public void Bar&lt;T&gt;(T item) { this.Foo&lt;Container&lt;T&gt;&gt;(new Container&lt;T&gt;(item)); } </code></pre> <p>but this adds one layer you need to call-through and makes the types less clear.</p>