title: "Constraints for explicit interface implementation..."
body: <p>I can't figure out why the following wont work, any ideas??
      public interface IFieldSimpleItem
      { }</p>
  
  <pre><code>public interface IFieldNormalItem : IFieldSimpleItem
  { }
  
  public class Person
  {
      public virtual T Create&lt;T&gt;()
          where T : IFieldSimpleItem
      {
          return default(T);
      }
  }
  
  public class Bose : Person
  {
      public override T Create&lt;T&gt;()
          where T : IFieldNormalItem //This is where the error is
      {
          return default(T);
      } 
  }
  </code></pre>
  
  <p>The reason why I am doing this is due to the fact that if a developer inherits from Bose, Bose relies on the instance being creating being at least of IFieldNormalItem. Whereas the below only relies on it being IFieldSimpleItem but the above should force it to be at least IFieldNormalItem.</p>
  
  <pre><code>public class Person
  {
      public virtual IFieldSimpleItem Create() 
      {
          return null;
      }
  }
  
  public class Bose : Person
  {
      public override IFieldSimpleItem Create()  
      {
          return null;
      } 
  }
  </code></pre>
  
  <p>Cheers 
  Anthony</p>