c#接口,抽象类,强制继承类不是抽象类

Sea*_*kit 2 .net c# oop inheritance interface

是否有继承具有接口的基类来实现该接口的成员.

一些界面

public interface ICanWork
{
     void DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

一些抽象的课

public abstract Class MyBase : ICanWork
{
     // I do not want to implement the ICanWork but instead want the derived class which inherit it
}
Run Code Online (Sandbox Code Playgroud)

我继承基类的类

public class House : MyBase
{
     // i want the compiler to know that it needs to implement ICanWork 
}
Run Code Online (Sandbox Code Playgroud)

这没有像我期望的那样起作用.

通过将接口放在类上继承基类来实现这一目的的唯一方法是什么?

例如

public class House : MyBase, ICanWork
{

}
Run Code Online (Sandbox Code Playgroud)

任何有用的建议?

Him*_*ere 8

必须在该类中实现实现您的接口的接口,即使您的类是abstract.但是,您也可以使该方法的实现abstract强制所有派生类实现它:

public abstract Class MyBase : ICanWork
{
     public abstract void DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

当您现在定义派生asbtract基类的类时,您还必须实现该方法:

public class House : MyBase
{
    public override void DoSomething() { ... }
}
Run Code Online (Sandbox Code Playgroud)

来自MSDN:

与非抽象类一样,抽象类必须提供类的基类列表中列出的接口的所有成员的实现.但是,允许抽象类将接口方法映射到抽象方法