2011-09-25 23 views
0

如何獲取調用者類的基類?C#獲取調用者類的類型(不是靜態的)

這是父,在這裏我要打印的子類型而不發送

public abstract class Parent: ISomeInterface { 

     public void printChildType() 
     { 
      Type typeOfMyChild = ?????; 
      MessageBox.Show(typeOfMyChild); //how do I get Child typeOfMyChild 
     } 
} 

孩子

public class Child : parent { 

} 

pirnt子類型:

Child child = new Child(); 
child.printChildType(); 

感謝

(I已經看到這一個:Get inherited caller type name in base static class但我沒有用靜態方法)

回答

2
Type typeOfMyChild = this.GetType(); 

感謝多態,當你調用:

Child child = new Child(); 
child.printChildType(); 

它應該打印Child

+3

這裏沒有必要讓'printChildType'虛擬來觀察多態。 – Ani

+0

@Ani,正確。感謝您指出了這一點。我已經更新了我的答案。 –

2

你不是在尋找當前的類型嗎?

public void printChildType() 
    { 
     Type typeOfMyChild = GetType(); 
     MessageBox.Show(typeOfMyChild); 
    }