C# 如何重写调用基方法的重写方法

C# 如何重写调用基方法的重写方法,c#,inheritance,C#,Inheritance,我在类a中有一个方法Hello,它应该被类B覆盖。 因此,B中被重写的方法必须调用基本方法来准备一些东西 方法DoSomeThing是此方法的附加功能。现在我想在新类C中重写B.Hello,以更改B.DoSomeThing的逻辑 要求: C.Hello也需要A.Hello的方法调用,以便做一些基本的准备工作 只有B.DoSomeThing应替换为C.DoSomeThing2 不允许我更改A和B 我无法调用类A的基方法。解决我的问题最好的办法是什么 只需复制并粘贴A的代码。由于A中的私有方法,

我在类
a
中有一个方法
Hello
,它应该被类
B
覆盖。 因此,
B
中被重写的方法必须调用基本方法来准备一些东西

方法
DoSomeThing
是此方法的附加功能。现在我想在新类
C
中重写
B.Hello
,以更改
B.DoSomeThing
的逻辑

要求:

  • C.Hello
    也需要
    A.Hello
    的方法调用,以便做一些基本的准备工作
  • 只有
    B.DoSomeThing
    应替换为
    C.DoSomeThing2
  • 不允许我更改
    A
    B
我无法调用类
A
的基方法。解决我的问题最好的办法是什么

只需复制并粘贴
A的代码。由于
A
中的私有方法,Hello
无法工作


EDIT:class
C
必须继承class
B

您不能直接继承class
A,调用基本方法后,编写您自己的DoSomething逻辑吗?我必须继承B,因为我需要方法和逻辑。所以您需要A的所有功能,B的部分功能和C的一些新功能不涉及B类,对我来说似乎是不可能的。听起来你的继承树被破坏了。试着重构到组合而不是继承。实际上,您的需求相互矛盾,因为C必须继承B,而不是A。@Đøharrrck当您把事情搞得一团糟时,您会把它清理干净,不要让它变得更糟。
public class A 
{
   protected virtual void Hello() {}
}

public class B : A 
{
   protected override void Hello() {
      base.Hello();

      DoSomeThing();
   }
}

public class C : B 
{
   protected override void Hello() {
      ???????????????

      DoSomeThing2();
   }
}