调用重写方法的祖父母实现

Pas*_*ada 6 c# inheritance

可能重复:
如何调用base.base.method()?

我在C#中有一些继承问题。我已经勾勒三类:ABCC从继承BBA。现在,B该类base.Method1可以正常运行,但是我不能A.method1C该类中调用。如果我把base.Method1C显然是法会method1B。有什么建议吗?

PS在A课堂上,有些字段标记为私有,因此您只能访问它们

class A
{    
    private instance;    
    public virtual void Method1 ()
    {       
        instance = this;
        do something;       
    }
}

class B : A
{
    public override void Method1()
    {
        base.Method1();
        do something;       
    }
}

class C : B
{   
    public override void Method1 ()
    {
        //need A Method1 then do something
    }
}
Run Code Online (Sandbox Code Playgroud)

Ric*_*lly 7

这是C#的一个特性。如果您希望将此方法公开给类 C,请考虑像这样重构 A:

class A
{    
  private instance;    
  public virtual void Method1 ()
  {
    AMethod1();       
  }

  protected void AMethod1()
  {
    instance = this;
    do something;       
  }
}
Run Code Online (Sandbox Code Playgroud)

这将使您能够从 C 内部调用此方法:

class C : B
{   
  public override void Method1 ()
  {
    AMethod1();
    // do something;
  }
}
Run Code Online (Sandbox Code Playgroud)