title: Implicit Operator Conversion and Generics
body: <p>Why does this conversion not work?</p>
  
  <pre><code>public interface IMyInterface
  {
  }
  
  public interface IMyInterface2 : IMyInterface
  {
  }
  
  public class MyContainer&lt;T&gt; where T : IMyInterface
  {
       public T MyImpl {get; private set;}
       public MyContainer()
       {
            MyImpl = Create&lt;T&gt;();
       }
       public static implicit T (MyContainer&lt;T&gt; myContainer)
       {
          return myContainer.MyImpl;
       }
  }
  </code></pre>
  
  <p>When I use my class it causes a compile time error:</p>
  
  <pre><code>IMyInterface2 myImpl = new MyContainer&lt;IMyInterface2&gt;();
  </code></pre>
  
  <p>Cannot convert from MyContainer<code>&lt;IMyInterface2</code>> to IMyInterface2...hmmmm</p>