3

Le remplacement de ToString() d'une classe est généralement tout ce que vous devez faire pour obtenir un formatage personnalisé dans la fenêtre de surveillance, mais lorsque la classe est dérivée d'une liste, cela ne semble pas fonctionner.La valeur de la fenêtre de surveillance d'une liste <> peut-elle être personnalisée?

class ListOfInts : List<int> 
{ 
    public override string ToString() 
    { 
     return string.Join(",", this); 
    } 

    public static ListOfInts test = new ListOfInts() { 3, 4, 5 }; 
} 

Contrôle « test » dans la fenêtre de la montre-je obtenir

ListOfInts.test    Count = 3 ListOfInts 

et doivent forcer manuellement la question comme ceci:

ListOfInts.test.ToString() "3,4,5"  string 

Ceci est très bien pour une liste unique, mais J'ai un large éventail de choses. Y at-il un moyen d'arrêter le format "Count = 3" par défaut de prendre la priorité?

+3

Jamais utilisé, mais essayez le [ 'DebuggerDisplay'-Attribute] (https://msdn.microsoft.com/en-us/library/x810d419.aspx) –

Répondre

2

Vous pouvez utiliser le DebuggerDisplayAttribute:

[DebuggerDisplay("{ToString()}")] 
public class ListOfInts : List<int> 
{ 
    public override string ToString() 
    { 
     return string.Join(",", this); 
    } 
} 
+0

Il est intéressant de savoir pourquoi sa fenêtre de surveillance rapide n'a pas utilisé le ToString surchargé. Je suppose que cela a quelque chose à voir avec ses paramètres de débogueur (f.e. "Afficher la structure brute sur les objets dans les fenêtres de variables"). –

+0

@TimSchmelter, Dans mon LinqPad, il utilise le 'ToString()' surchargé sans l'attribut [DebuggerDisplay] '. Je n'ai pas vérifié VS. – haim770

+0

Peut-être, bien que ce paramètre particulier ne semble pas faire la différence. L'utilisation de cet attribut le fait certainement -) – tombola