"显式接口实现的约束......"

vdh*_*ant 5 .net c# generics

我无法弄清楚为什么以下不会工作,任何想法?公共接口IFieldSimpleItem {}

public interface IFieldNormalItem : IFieldSimpleItem
{ }

public class Person
{
    public virtual T Create<T>()
        where T : IFieldSimpleItem
    {
        return default(T);
    }
}

public class Bose : Person
{
    public override T Create<T>()
        where T : IFieldNormalItem //This is where the error is
    {
        return default(T);
    } 
}
Run Code Online (Sandbox Code Playgroud)

我这样做的原因是,如果开发人员继承自Bose,Bose依赖于创建至少为IFieldNormalItem的实例.以下仅依赖于IFieldSimpleItem,但上述内容应强制它至少为IFieldNormalItem.

public class Person
{
    public virtual IFieldSimpleItem Create() 
    {
        return null;
    }
}

public class Bose : Person
{
    public override IFieldSimpleItem Create()  
    {
        return null;
    } 
}
Run Code Online (Sandbox Code Playgroud)

干杯安东尼