gpt4 book ai didi

c# - 如何获取执行类型的名称?

转载 作者:行者123 更新时间:2023-11-30 17:01:40 27 4
gpt4 key购买 nike

我正在尝试确定执行类型的名称。我在我的基类中执行 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com