实现抽象方法时出错

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()