2012-03-28 8 views
7

. NET/Visual Studio używa metody ToString() obiektu, aby wyświetlić wartość obiektu podczas wyświetlania go w debugerze. Chciałbym wyświetlić konkretne informacje, ale ponieważ .ToString() jest często używany przez framework przy konwersji obiektu na ciąg, nie mogę tego zrobić przez przesłonięcie ToString(). Czy istnieje atrybut, za pomocą którego debugger może użyć innej metody lub właściwości?Jak używać delegata innego niż ToString do wyświetlania wartości obiektu podczas debugowania?

Odpowiedz

12

Użyj DebuggerDisplayAttribute[MSDN]. Dostarczasz go z ciągiem formatującym odwołującym się do pól/właściwości w klasie, które będą wyświetlane podczas debugowania, bez konieczności komunikowania się z ToString().

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

Działa również z metod:

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

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

Awesome, widziałem, że atrybut w IntelliSense, ale nie zdawałem sobie sprawy, wartość może być tokenized. To ma więcej sensu. Dzięki! –

Powiązane problemy