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

5

有没有办法让继承了一个含有接口的基类的成员来实现该接口。

一些接口

public interface ICanWork
{
     void DoSomething();
}

一个抽象类

public abstract Class MyBase : ICanWork
{
     // I do not want to implement the ICanWork but instead want the derived class which inherit it
}

我继承基类的类

public class House : MyBase
{
     // i want the compiler to know that it needs to implement ICanWork 
}

这个并没有按照我的预期工作。

实现这个的唯一方法是将接口放在继承基类的类上吗?

例如:

public class House : MyBase, ICanWork
{
    
}

有什么有用的建议吗?


1
您可以在 MyBase 类中将接口成员/方法实现为抽象。 - Roman
@Roman,你是对的,我没有好好想一下... - Seabizkit
1个回答

11

即使您的类是抽象的,您也必须在实现接口的那个类中实现接口。但是,您可以将该方法的实现也设置为abstract,这会强制所有派生类都实现它:

public abstract Class MyBase : ICanWork
{
     public abstract void DoSomething();
}

当你现在定义一个派生自你的抽象基类的类时,你也必须实现该方法:

public class House : MyBase
{
    public override void DoSomething() { ... }
}

来自MSDN

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


标记为答案,即使我自己想出了这种方式...当时没想到,但还是谢谢! - Seabizkit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接