2012-03-28 7 views
7

.NET/Visual Studio utiliza el método ToString() de un objeto para mostrar el valor de un objeto al visualizarlo en el depurador. Me gustaría mostrar información específica, pero dado que .ToString() a menudo es utilizado por el marco al convertir un objeto a una cadena, no puedo hacerlo anulando ToString(). ¿Hay algún atributo que pueda usar para decirle al depurador que use un método o propiedad diferente?¿Cómo uso un delegado que no sea ToString para mostrar el valor de un objeto durante la depuración?

Respuesta

12

Uso del DebuggerDisplayAttribute[MSDN]. Usted le proporciona una cadena de formato que hace referencia a los campos/propiedades dentro de la clase para mostrar durante la depuración sin tener que meterse con ToString().

[DebuggerDisplay("Count = {count}")] 
class MyHashtable 
{ 
    public int count = 4; 
} 

También trabaja con métodos:

[DebuggerDisplay("{ToDebugString()}")] 
public class SomeClass 
{ 
    public override String ToString() 
    { 
     return "Normal ToString()"; 
    } 

    public String ToDebugString() 
    { 
     return "ToDebugString()"; 
    } 
} 
+0

impresionante, he visto que la atributo en Intellisense pero no me había dado cuenta el valor podría ser tokenized. Esto tiene mucho más sentido. ¡Gracias! –

Cuestiones relacionadas