实现抽象方法时出错

时间:2018-06-16 15:44:33

标签: c# derived-class

我正在尝试定义像这样的基类

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)应该满足抽象定义,因此返回的方法与基类中的定义不匹配。 派生类如何满足此要求?

1 个答案:

答案 0 :(得分:0)

您的函数需要返回BindingList<EntityBase>才能满足合同。否则它是一个不同的功能签名。但是,由于SomeEntity是EntityBase的后代,因此您可以将BindingList<SomeEntity>返回到BindingList<EntityBase>。但是函数的签名必须匹配。

此外,您需要SomeEntity类的方法签名中的override关键字:

public override BindingList<EntityBase> BindingList()