我希望在调试模式下为我控制的类获得ToString()的输出。如果鼠标悬停在变量上时,这是第一件显示出来的东西就太好了。是否有相应的属性可以实现这个目的?
我希望在调试模式下为我控制的类获得ToString()的输出。如果鼠标悬停在变量上时,这是第一件显示出来的东西就太好了。是否有相应的属性可以实现这个目的?
在你的类上标记
[System.Diagnostics.DebuggerDisplay("{ToString()}")]
测试:
[System.Diagnostics.DebuggerDisplay("{ToString()}")]
class MyClass
{
private string _foo = "This is the text that will be displayed at debugging"
public override string ToString()
{
return _foo;
}
}
现在,当你用鼠标悬停在一个变量上时,它会显示 This is the text that will be displayed at debugging
(这是将显示在调试中的文本)。
有一个DebuggerDisplayAttribute
,它允许您影响显示方式。它允许您编写相当复杂的表达式来生成调试输出,尽管不建议这样做。
但是,如果您已经覆盖了ToString
,那么文档中记录了调试器默认显示该方法的返回结果。也许代码有问题?
this
,而你不必输入它(“隐式”)。基本上就像在类方法内部使用this
一样。 - JonToString()
方法发生 异常,则 VS 调试器将不会显示该值。DebuggerDisplayAttribute
将强制显示异常消息。但通常情况下,您不应该这样做。 - swdevToString
的输出应该是在调试时看到的默认输出。您可以使用DebuggerDisplay
属性进行覆盖(请参见MSDN)。ToString
方法,因为它更容易和更通用,因为它有助于写入日志文件。ToString
。DebuggerDisplayAttribute
。请参考下面的链接,了解其使用方法,并将其应用于您的类中,使用ToString()
方法来确定要显示的内容。我只使用过属性,不确定是否可以注入类。
http://www.codeproject.com/Articles/117477/Using-DebuggerDisplayAttribute
在对象中重写 .ToString 如下:
public class MyObject
{
public int Property1{ get; set; }
public string Property2{ get; set; }
public string Property3 { get; set; }
public override string ToString()
{
return Property3;
}
}
[DebuggerDisplay("Name: {Name}")]
class Base
{
public string Name { get; set; }
}
// Add this line to show the Address instead of Name in the debugger.
[DebuggerDisplay("{ToString()}")]
class Derived : Base
{
public string Address { get; set; }
public override string ToString()
{
return $"Address: {Address}";
}
}