2012-03-28 2 views
7

.NET/Visual Studio verwendet die ToString() - Methode eines Objekts, um den Wert eines Objekts anzuzeigen, wenn es im Debugger angezeigt wird. Ich möchte bestimmte Informationen anzeigen, aber da .ToString() oft vom Framework verwendet wird, wenn ein Objekt in eine Zeichenfolge konvertiert wird, kann ich dies nicht tun, indem ich ToString() überschreibe. Gibt es ein Attribut, das ich verwenden kann, um dem Debugger mitzuteilen, eine andere Methode oder Eigenschaft zu verwenden?Wie verwende ich einen anderen Delegaten als ToString, um den Wert eines Objekts beim Debuggen anzuzeigen?

Antwort

12

Verwenden Sie die DebuggerDisplayAttribute[MSDN]. Sie geben es mit einer Formatzeichenfolge an, die auf Felder/Eigenschaften innerhalb der Klasse verweist, die beim Debuggen angezeigt werden, ohne sich mit ToString() herumschlagen zu müssen.

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

Es funktioniert auch mit Methoden:

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

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

Awesome, sah ich dieses Attribut in Intellisense, aber ich wusste nicht, der Wert Token aufgeteilt werden könnte. Das macht viel mehr Sinn. Vielen Dank! –