title: Cannot implicitly convert derived type to its base generic type
body: <p>I have the following classes and interfaces:</p>
  
  <pre><code>public interface IThing
  {
      string Name { get; }
  }
  
  public class Thing : IThing
  {
      public string Name { get; set; }
  }
  
  public abstract class ThingConsumer&lt;T&gt; where T : IThing
  {
      public string Name { get; set; }
  }
  </code></pre>
  
  <p>Now, I have a factory that will return objects derived from ThingConsumer like:</p>
  
  <pre><code>public class MyThingConsumer : ThingConsumer&lt;Thing&gt;
  {
  }
  </code></pre>
  
  <p>My factory currently looks like this:</p>
  
  <pre><code>public static class ThingConsumerFactory&lt;T&gt; where T : IThing
  {
      public static ThingConsumer&lt;T&gt; GetThingConsumer(){
          if (typeof(T) == typeof(Thing))
          {
              return new MyThingConsumer();
          }
          else
          {
              return null;
          }
      }
  }
  </code></pre>
  
  <p>I'm getting tripped up with this error: <code>Error  1   Cannot implicitly convert type 'ConsoleApplication1.MyThingConsumer' to 'ConsoleApplication1.ThingConsumer&lt;T&gt;'</code></p>
  
  <p>Anyone know how to accomplish what I'm attempting here?</p>
  
  <p>Thanks!</p>
  
  <p>Chris</p>