Ich habe eine Reihe von Klassen, die mit DebuggerDisplayAttribute geschmückt sind.Gibt es eine Methode zum Rendern eines Objekts mit DebuggerDisplayAttribute
Ich möchte Trace-Anweisungen zu Unit Tests hinzufügen, die Instanzen dieser Klassen angezeigt werden.
Gibt es in .NET Framework eine Methode, die ein Objekt anzeigt, das mit DebuggerDisplayAttribute formatiert wurde (oder auf die Verwendung von .ToString() zurückgreift, wenn kein DebuggerDisplayAttribute definiert ist)?
EDIT
Um zu klären, ich war es etwas in das Framework integriert sein könnte hoffen. Ich weiß, dass ich die Value-Eigenschaft von DebuggerDisplayAttribute abrufen kann, aber ich muss dann meine Instanz formatieren, indem ich die Formatzeichenfolge verwendet, die von DebuggerDisplayAttribute.Value dargestellt wird.
Wenn ich meine eigene Rolle, würde ich eine Verlängerung Methode entlang der folgenden Zeilen ins Auge fassen:
public string FormatDebugDisplay(this object value)
{
DebugDisplayAttribute attribute = ... get the attribute for value ...
if (attribute = null) return value.ToString();
string formatString = attribute.Value;
??? How do I format value using formatString ???
return SomeFormatMethod(formatString, value);
}
Danke. Meine eigene Methode so zu schreiben, wie Sie es beschreiben, vereitelt den Zweck dessen, was ich erreichen wollte. Ich habe ToString() für die fraglichen Klassen überschrieben. – Joe
Wenn Ihr Anwendungscode ToString() keine Bedeutung zuweist, dann ist das einfacher. In einigen Fällen hat ToString() bereits eine Bedeutung (z.um das Objekt in einer Listbox anzuzeigen), und in diesen Fällen kann DebuggerDisplay plus eine Methode immer noch nützlich sein. –
Sie müssten den Visual Studio-Debugger nicht in Ihre App einbetten, um eine Methode zu schreiben, die einen Mehrwert bietet. Ich würde vermuten, dass _most_ Verwendung von DebuggerDisplay einfache Eigenschaftswerte sind, und die Implementierung so viel wäre eine wertvolle Methode. –