我正在尝试确定执行类型的名称。我在我的基类中执行 this.GetType 并返回调用类的名称(例如,从我的基类继承的类)。如何获取实际执行 this.GetType() 的类的名称?
考虑以下代码。
class MyBaseClass() : SomeEvenHigherClass {
public MyBaseClass() {
Debug.WriteLine(this.GetType().Name);
}
}
class ChildClass: MyBaseClass {
}
void Main() {
var cc = new ChildClass();
}
在 MyBaseClass 的构造函数中,我想打印出我所在的实际类的名称。
最佳答案
如果您只是想保持强类型以防名称更改,那么您可以这样做,而不是仅仅将其硬编码打印出来:
// When using the rename tool for 'MyBaseClass' in Visual Studio,
// it will still be printing out the right value.
Debug.WriteLine(typeof(MyBaseClass).Name);
另一种解决方法可能是:
public MyBaseClass()
{
var m = System.Reflection.MethodBase.GetCurrentMethod();
Console.WriteLine(m.DeclaringType.Name);
}
如果您只关心当前 基本类型,那么您可以采用 Aaron Palmer 的回答, 然而,在以下情况下,结果可能不是您想要的:
public class MyBaseClass
{
public MyBaseClass()
{
var type = this.GetType();
Debug.WriteLine(type.BaseType.Name);
// If this was called by ChildClass it would print MyBaseClass2
}
}
public class MyBaseClass2 : MyBaseClass
{
}
public class ChildClass : MyBaseClass2
{
}
关于c# - 如何获取执行类型的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20734048/