用抽象方法显式实现接口

ace*_*33s 14 c# interface abstract

这是我的界面:

public interface MyInterface {
    bool Foo();
}
Run Code Online (Sandbox Code Playgroud)

这是我的抽象类:

public abstract class MyAbstractClass : MyInterface {
    abstract bool MyInterface.Foo();
}
Run Code Online (Sandbox Code Playgroud)

这是编译器错误: "修饰符'abstract'对此项无效.

我应该如何继续使用抽象方法显式实现抽象?

Jon*_*eet 21

基本上你不能.反正不是直接的.您不能覆盖显式实现接口的方法,并且必须覆盖抽象方法.你最接近的将是:

bool MyInterface.Foo() {
    return FooImpl();
}

protected abstract bool FooImpl();
Run Code Online (Sandbox Code Playgroud)

它仍然显式实现接口强制派生类实际提供实现.这些是你想要实现的方面吗?


Mik*_*our 13

您必须使用接口成员的隐式实现而不是显式实现:

public abstract class MyAbstractClass : MyInterface
{
    public abstract bool Foo();
}
Run Code Online (Sandbox Code Playgroud)

  • 我知道了。这是一个非常直接的点。太糟糕了,我没有更多的赞成票了。 (2认同)