Cómo obtener ToString () para aparecer en Debug

Me gustaría que ToString () se muestre para una clase bajo mi control en el modo de depuración.

Sería bueno si esto fuera lo primero en aparecer cuando pasas el cursor sobre una variable con el mouse. ¿Hay un atributo para esto?

Marca tu clase con

[System.Diagnostics.DebuggerDisplay("{ToString()}")] 

Prueba:

 [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; } } 

Ahora, cuando se desplaza sobre una variable con el mouse, se mostrará This is the text that will be displayed at debugging .

Hay DebuggerDisplayAttribute que le permite influir en la pantalla. Le permite escribir expresiones bastante complejas para producir la salida de depuración, aunque no se recomienda hacerlo .

Sin embargo, si ha ToString entonces se documenta al depurador para que muestre eso de manera predeterminada. Tal vez hay algo mal con el código?

Lo que estás buscando es DebuggerDisplayAttribute :

http://www.codeproject.com/Articles/117477/Using-DebuggerDisplayAttribute

Use el enlace anterior para ver cómo se hace y luego aplique esto a su clase, usando el método ToString() para controlar lo que se muestra. Solo he usado propiedades, no estoy seguro si puedes inyectar clases.

La salida de ToString debe ser el valor predeterminado que se ve cuando se realiza la depuración.

Puede anularse utilizando el atributo DebuggerDisplay (ver MSDN ).

Prefiero sobrescribir el método ToString porque es más fácil y más versátil porque también ayuda a la hora de escribir en los archivos de registro.

¿Qué salida ves? Si obtienes el nombre del tipo, verás la ToString predeterminada.

en el objeto Reemplace el .ToString de la siguiente manera:

 public class MyObject { public int Property1{ get; set; } public string Property2{ get; set; } public string Property3 { get; set; } public override string ToString() { return Property3; } } 

Esto devolverá Property3 como el valor ToString ()

Tuve un problema similar Mi clase tenía una anulación ToString () y aún no aparecía en VS, lo cual era extraño.

Al agregar el atributo [System.Diagnostics.DebuggerDisplay (“{ToString ()}”)] a la clase, se mostró una excepción en el depurador de visual studio, donde debería haberse mostrado ToString. Resultó que tuve un error con el uso incorrecto de string.Format () en mi implementación. Este es un comportamiento interesante: VS vuelve a la ToString predeterminada en caso de una excepción. El uso del atributo mencionado obliga a la pantalla a mostrar el resultado del método: válido o excepcional. Esto es muy útil para la depuración de ToString (). De lo contrario, no tiene sentido agregar este atributo explícitamente a cada clase ya que las clases están activadas de manera predeterminada, a menos que uno quiera desactivar este comportamiento por alguna razón.

Si está utilizando Visual Studio, puede agregar un reloj @ runtime om a la línea yourvariable.ToString (), que aparecerá en la parte inferior de la pantalla cuando llegue a un punto de interrupción.