实现抽象方法时出错
Error implementing an abstract method
我正在尝试像这样定义一个基础class
public abstract class EntityBase
{
// some other things here
public abstract BindingList<EntityBase> BindingList();
}
当我定义派生的时候class
public class SomeEntity: EntityBase
{
public BindingList<SomeEntity> BindingList()
{
BindingList<SomeEntity> result = new BindingList<SomeEntity>();
// code to populate the list
return result;
}
}
编译器说:
'AbstractDataContext.SomeEntity' does not implement inherited abstract member 'AbstractDataContext.EntityBase.BindingList()'
很明显,问题是编译器无法解决SomeEntity 是 EntityBase,因此(恕我直言)应该满足抽象定义,所以方法return确实与基础 class 中的定义不匹配。
派生的class如何满足这个要求?
您的函数需要 return BindingList<EntityBase>
才能满足约定。否则它是一个不同的函数签名。但是,由于 SomeEntity 是 EntityBase 的后代,您可以 return 向上转换为 BindingList<EntityBase>
的 BindingList<SomeEntity>
。但是函数的签名必须匹配。
此外,您需要在 SomeEntity 的方法签名中使用 override
关键字 class:
public override BindingList<EntityBase> BindingList()
我正在尝试像这样定义一个基础class
public abstract class EntityBase
{
// some other things here
public abstract BindingList<EntityBase> BindingList();
}
当我定义派生的时候class
public class SomeEntity: EntityBase
{
public BindingList<SomeEntity> BindingList()
{
BindingList<SomeEntity> result = new BindingList<SomeEntity>();
// code to populate the list
return result;
}
}
编译器说:
'AbstractDataContext.SomeEntity' does not implement inherited abstract member 'AbstractDataContext.EntityBase.BindingList()'
很明显,问题是编译器无法解决SomeEntity 是 EntityBase,因此(恕我直言)应该满足抽象定义,所以方法return确实与基础 class 中的定义不匹配。 派生的class如何满足这个要求?
您的函数需要 return BindingList<EntityBase>
才能满足约定。否则它是一个不同的函数签名。但是,由于 SomeEntity 是 EntityBase 的后代,您可以 return 向上转换为 BindingList<EntityBase>
的 BindingList<SomeEntity>
。但是函数的签名必须匹配。
此外,您需要在 SomeEntity 的方法签名中使用 override
关键字 class:
public override BindingList<EntityBase> BindingList()