如何从 C# 中实现的 class 引用抽象方法

How to reference abstract method from an implemented class in C#

我有一个基础 class (A),下面,我一直想继承自

class A
{
   abstract protected int foo();

   public int foo2()
   {
      //do some stuff

      foo();      
   }

}

这行不通,因为我不能在非抽象中使用抽象方法 class。但是我怎样才能实现以下目标:

class 继承 class A 的 es 已经实现了 foo2 但 class 继承的 es 必须实现 foo?最好 foo2 是可覆盖的。

更新:Class A 不必是非抽象的

只需将 class A 摘要。 Abstract classes 可以实现一些方法。

使 foo2() 成为虚拟的,然后 class 从 A 派生的 es 可以覆盖它。

您在构建项目时会收到​​错误消息 你不能在非抽象中定义抽象方法 class

异常

Error   1   ' .A.foo()' is abstract but it is contained in non-abstract class

我希望您有充分的理由不将 A 抽象化。更改现有非抽象 class 行为的首选方法是 inject 该行为。

interface IFoo
{
    int Foo();
}

class A
{
    private IFoo foo;

    public A(IFoo foo)
    {
        this.foo = foo;
    }

    public int Foo2()
    {
        //...
        return foo.Foo();            
    }
}