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
必须继承classB
您不能直接继承classA,调用基本方法后,编写您自己的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();
}
}