2011-08-26 219 views
1

我從一個基類「MyLog」繼承一個類。如何在C#中的基類內找到父類的名稱?

如果我在繼承的類中調用「Write」,我希望它以繼承類的名稱爲前綴添加任何消息。由於這個應用程序需要很快,所以我需要一些避免在正常程序操作期間反射(啓動時反射很好)的方法。

下面是一些代碼來說明這一點:

class MyClassA : MyLog 
{ 
    w("MyMessage"); // Prints "MyClassA: MyMessage" 
} 

class MyClassB : MyLog 
{ 
    w("MyMessage"); // Prints "MyClassB: MyMessage" 
} 

class MyLog 
{ 
    string nameOfInheritedClass; 
    MyLog() 
    { 
    nameOfInheritedClass = ????????????? 
    } 

    w(string message) 
    {  
    Console.Write(nameOfInheritedClass, message); 
    } 
} 

回答

5

你想,我懷疑:

nameOfInheritedClass = GetType().Name; 

GetType()總是返回實際型這就是所謂的對象。

+0

太棒了!這像一個魅力。 – Contango

2

嘗試在myLog構造探索

this.GetType() 

屬性外,還有你應該能夠找到種類名稱和正確的類層次結構的其他特性。

+0

優秀,GetType()。名稱完美。 – Contango

2

我相信你可以使用GetType()來實現這一點。

var parentType = this.GetType().BaseType; //Will return MyLog 

凡爲喬恩斯基特指出調用Name將返回的實際類型及其呼籲的對象。

相關問題