如何从C#中的抽象类访问抽象的未定义函数?

时间:2018-08-10 16:26:23

标签: c#

我该怎么做?

public abstract class A {

    protected abstract async Task foo(int a);

    protected async Task bar(int a) {
        await foo(a);
    }
}

public class B : A {
    public async Task foo(int a) {
        return a + 1;
    }
}

基本上,我想在抽象类中声明一个没有主体的异步函数,在抽象类中也要有另一个函数,就像使用它一样存在。但是,请在实现抽象类的类中使用主体定义该函数。

请注意:我的代码中的foo中包含使用等待的内容,因此它必须是异步的。

这可能吗?

2 个答案:

答案 0 :(得分:0)

请勿在抽象类中输入progBar nameTitle: NAME 2。只要它返回card,您仍然可以使用card实现来覆盖它。

您需要考虑的其他事项:

  • 您需要在foo的{​​{1}}函数上使用async关键字
  • 如果要返回一个int,则必须为Task
  • 他们要么都必须受到保护,要么都必须公开。您不能有一个受到保护,另一个则不能受到保护。

答案 1 :(得分:-2)

您缺少覆盖关键字:

public abstract class A {

    public abstract Task<int> foo(int a);

    protected async Task bar(int a) {
        await foo(a);
    }
}

public class B : A {
    public override async Task<int> foo(int a) {
        return a + 1;
    }
}