我正在尝试定义像这样的基类
public abstract class EntityBase
{
// some other things here
public abstract BindingList<EntityBase> BindingList();
}
当我定义派生类
时public class SomeEntity: EntityBase
{
public BindingList<SomeEntity> BindingList()
{
BindingList<SomeEntity> result = new BindingList<SomeEntity>();
// code to populate the list
return result;
}
}
编译器说:
'AbstractDataContext.SomeEntity'没有实现继承的抽象成员'AbstractDataContext.EntityBase.BindingList()'
显然,问题是编译器无法解决SomeEntity 是 EntityBase,因此(IMHO)应该满足抽象定义,因此返回的方法与基类中的定义不匹配。 派生类如何满足此要求?
答案 0 :(得分:0)
您的函数需要返回BindingList<EntityBase>
才能满足合同。否则它是一个不同的功能签名。但是,由于SomeEntity是EntityBase的后代,因此您可以将BindingList<SomeEntity>
返回到BindingList<EntityBase>
。但是函数的签名必须匹配。
此外,您需要SomeEntity类的方法签名中的override
关键字:
public override BindingList<EntityBase> BindingList()