我有以下代码:
class ClassA
{
public virtual void DoSomething()
{
DoSomething(1); // when called from ClassB, it calls DoSomething from ClassA with an infinite recursion
}
public virtual void DoSomething(int someInt)
{
// do something
}
}
class ClassB : ClassA
{
public override void DoSomething()
{
DoSomething(1);
}
public override void DoSomething(int someInt)
{
base.DoSomething(someInt);
// do something
}
}
class Program
{
void someMethod()
{
ClassB instance = new ClassB();
instance.DoSomething(); // stack overflow caused by infinite recursion
}
}
我的问题是,当我调用ClassB.DoSomething();
它并调用它时,base.DoSomething(someInt);
我希望派生 ClassB 的父类调用 ClassA 的方法,而不是被覆盖的方法。
有没有办法在不复制/粘贴重复代码的情况下以干净的方式做到这一点?