2015-02-10 70 views
-2

我只是想了解下面是否可能。如何訪問C#中的繼承層次結構中的前一父母

我有客戶,specialCustomer和goldCustomer類。 Customer和GoldCustomer的特殊繼承繼承自SpecialCustomer。

如何從GoldCustomer訪問客戶類的Add()實現?使用base.Add()調用僅直接父的Add()

public class Customer 
{ 
    public virtual void add() 
    { 
     Console.WriteLine("Base Add"); 

    } 
} 

public class SpecialCustomer: Customer 
{ 
    public override void add() 
    {    
     Console.WriteLine("SPL CUST Add"); 
    } 
} 

public class GoldCustomer : SpecialCustomer 
{ 

    public new void add() 
    { 
     base.add();// cals the immediate parent. 
     //How to call the method on Customer base class(Parent's parent) 
     Console.WriteLine(" chid GOLD CUST Add"); 
    } 

} 

回答

0

我的第一個建議是爲了避免這樣的情況,如果你能(軟件是複雜的,爲什麼讓它變得更加複雜?)。

第二個建議,如果你無法避免的情況下,被轉換this所需的基本類型和調用所需的方法,像((Customer)this).add()

但你能解釋一下爲什麼你需要做這樣的事情?這可能是你的設計需要一些重構。

0
public class Customer 
    { 
     public virtual void add() 
     { 
      C1(); 
     } 


     public void C1() 
     { 
      Console.WriteLine("Base Add"); 
     } 
    } 

您的代碼應該是這樣的,之後只需要調用new GoldCustomer.C1();