我无法弄清楚为什么以下不会工作,任何想法?公共接口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)
干杯安东尼