class GrandParent
{
public virtual void Foo() { ... }
}
class Parent : GrandParent
{
public override void Foo()
{
base.Foo();
//Do additional work
}
}
class Child : Parent
{
public override void Foo()
{
//How to skip Parent.Foo and just get to the GrandParent.Foo base?
//Do additional work
}
}
如上面的代码所示,如何让 Child.Foo() 调用 GrandParent.Foo() 而不是调用 Parent.Foo()? base.Foo()
首先将我带到父类。
最佳答案
如果你需要这个,你的设计是错误的。
相反,将每个类的逻辑放在 DoFoo
中,并且在不需要时不要调用 base.DoFoo
。
class GrandParent
{
public void Foo()
{
// base logic that should always run here:
// ...
this.DoFoo(); // call derived logic
}
protected virtual void DoFoo() { }
}
class Parent : GrandParent
{
protected override void DoFoo()
{
// Do additional work (no need to call base.DoFoo)
}
}
class Child : Parent
{
protected override void DoFoo()
{
// Do additional work (no need to call base.DoFoo)
}
}
关于C#:有什么方法可以跳过多态性中的一个基本调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6913569/