我测试了这样的代码:
class A { public A() { } public virtual void Test () { Console.WriteLine("I am A!"); } } class B : A { public B() { } public override void Test() { Console.WriteLine("I am B!"); base.Test(); } } class C : B { public C() { } public override void Test() { Console.WriteLine("I am C!"); base.base.test(); //I want to display here "I am A" } }
解决方法
你不能 – 因为它会违反封装.如果B类想要在Test上强制执行某种不变量(或任何),那么C类可以绕过它就会非常严峻.
如果你发现自己想要这个,你应该质疑你的设计 – 也许至少有一个你的继承关系是不合适的? (我个人试图鼓励组合从继承开始,但这是一个单独的讨论.)