40

在调试会话期间,在特定实例的调试信息中识别实际派生类的名称对我来说很重要。

我尝试使用this.GetType().Name,但这只是返回类的类型base

有没有一种简单的方法可以从基类中获取派生类的类型?

4

4 回答 4

63

this.GetType().Name应该管用。您可能没有派生类。

于 2009-09-03T19:27:16.990 回答
14

this.GetType().Name始终返回当前执行类型的名称,而不是编写它的代码的类型。不过,您可以模拟断点,Debugger.Break()以有条件的方式使用:

if (this.GetType().Name == "Problematic type")
    System.Diagnostics.Debugger.Break();
于 2009-09-03T19:31:47.587 回答
2

在调试会话期间...

请记住,与其暂停会话以添加一些丢弃的代码然后重新编译并重新启动,不如使用调试器来预测断点被击中后......

通过使用Immediate Window调试器并键入this.GetType().Name相关实例的关闭,然后按Enter,它将显示出来。

请参阅 VS Docs:立即窗口

有没有一种简单的方法可以从基类中获取派生类的类型?

是的,例如,我可以通过使用 和 的Name属性GetType实时确定异常是什么:

在此处输入图像描述

于 2020-10-18T21:50:27.573 回答
0

引发事件时,请务必将真实的发送者传递给发送者属性。监听类中的发送者对象应正确指向引发事件的子类。

于 2009-09-03T19:33:54.150 回答