title: implicit conversion from generic interface type
body: <p>I have the following implicit conversion operator:</p>
  
  <pre><code>public static implicit operator InputArgument&lt;T&gt;(T value)
  {
     return new InputArgument&lt;T&gt;(value);
  }
  </code></pre>
  
  <p>The following is code in an ASP.NET MVC controller:</p>
  
  <p>This works:</p>
  
  <pre><code>InputArgument&lt;string&gt; input = "Something";
  </code></pre>
  
  <p>This works:</p>
  
  <pre><code>InputArgument&lt;Controller&gt; input = this;
  </code></pre>
  
  <p>This works:</p>
  
  <pre><code>InputArgument&lt;IPrincipal&gt; input = new InputArgument&lt;IPrincipal&gt;(User);
  </code></pre>
  
  <p>But this doesn't work:</p>
  
  <pre><code>InputArgument&lt;IPrincipal&gt; input = User;
  </code></pre>
  
  <p>The last example gives the error: </p>
  
  <pre><code>&gt; Cannot implicitly convert type
  &gt; 'System.Security.Principal.IPrincipal' to
  &gt; 'Engine.InputArgument&lt;System.Security.Principal.IPrincipal&gt;'. An
  &gt; explicit conversion exists (are you missing a cast?)
  </code></pre>
  
  <p>What could be the reason that this implicit conversion does not work for IPrincipal?</p>