代码之家  ›  专栏  ›  技术社区  ›  Dr. Rajesh Rolen

接口正在强制抽象类实现其函数

  •  0
  • Dr. Rajesh Rolen  · 技术社区  · 14 年前

    我有一个抽象类,它实现了3个接口。

     public abstract class ServiceBaseCore<Entity, EntityKey> : MarshalByRefObject, IComponentService, IEntityProvider<Entity, EntityKey>
        where Entity : IEntityId<EntityKey>, new()
        where EntityKey : IEntityKey, new()
    {
     // Provided functionality/body to some methods of interface
    }
    

    问题:我的抽象类没有为接口函数提供实现(定义/主体),这是一个错误,正如我所读到的那样,“如果一个类是抽象的,那么就不需要为接口的所有/任何实现函数提供主体”。

    注意:代码是由codesmith生成的,尽管它显示错误。

    请告诉我哪里错了,我错过了什么。

    谢谢

    4 回复  |  直到 14 年前
        1
  •  7
  •   Johann Blais    14 年前

    只需创建一些抽象函数,编译器就会停止抱怨:

    public abstract void MyMethodDeclaredInTheInterface();
    

    编辑:要加快进程,只需在抽象类的接口名称上移动插入符号,然后按ctrl+。并选择“Implement interface your rinterface”。 然后,对notimplementedexception进行一点搜索和替换就可以了。

        2
  •  1
  •   siride    14 年前

    为接口创建抽象方法。否则,类实际上不一定以任何方式实现这些方法,即使派生类可能实现这些方法(派生版本不会通过vtables提供给基版本,因此无法实现接口约定)。这将违反接口背后的想法。

    注意:已经晚了,我很累了,所以我可能在理论上错了。但是,为接口所需的方法添加抽象方法将解决这个问题。

        3
  •  0
  •   Kirk Broadhurst    14 年前

    您应该能够右键单击接口名称(靠近 MyClass : IMyInterface )要查看上下文菜单,然后选择“实现接口”。Visual Studio将创建所有必需的方法和属性来对接口进行饱和。

        4
  •  0
  •   Alex Abdugafarov    14 年前

    你可以尝试一些IDE来节省很多时间。我很清楚,日食可以自动做到这一点。