C#: Any way to skip over one of the base calls in polymorphism?

后端 未结 7 1377
一个人的身影
一个人的身影 2021-01-17 16:34
class GrandParent
{
    public virtual void Foo() { ... }
}

class Parent : GrandParent
{
    public override void Foo()
    {
       base.Foo();

       //Do additi         


        
7条回答
  •  天命终不由人
    2021-01-17 16:47

    All these strong opinions...

    Sometimes it just makes sense to use 99% of something...

    public class Base
    {
      public virtual void Foo()
      {
       // Do something
      }
    }
    
    public class DerivedLevel1 : Base
    {
      public override void Foo()
      {
        DerivedLevel1Foo();
      }
      protected void DerivedLevel1Foo()
      {
        // Do something
        base.Foo();
      }
    }
    
    public class DerivedLevel2 : DerivedLevel1
    {
      public override void Foo()
      {
       DerivedLevel2Foo();
      }
      protected void DerviedLevel2Foo()
      {
        // Do something
        base.Foo();
      }
    }
    
    public class Special : Derived
    {
      public override void Foo()
      {
        // Don't do DerivedLevel2Foo()
        base.DerivedLevel1Foo();
      }
    }
    

提交回复
热议问题