2011-08-26 216 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将返回的实际类型及其呼吁的对象。

相关问题