我有以下类结构,并且在B.OnShow()我不想要的某些类中有很多类从B派生的类C,但是我想从C执行A.OnShow()有什么技巧吗?

abstract class A
{
   protected virtual void OnShow()
   {
        //some code
        base.OnShow();
   }
}

class B : A
{
    protected override void OnShow()
    {
      //some other code
      base.OnShow();
    }
}

class C : B
{
   protected override void OnShow()
   {
      //some other code
      base.OnShow();
   }
}

最佳答案

不要让C从B扩展而来,而是创建一个新的“ X”类,它从A扩展,并且具有您想要B和C都在B中的部分,然后让C和B从“ X”扩展。然后,B中将只包含您想要B特定的位(有点抽象,但我认为这很有意义)。

一般来说,如果您尝试跳过父方法,那么您做错了什么。

10-08 02:16