Freigeben über


Teilen Sie dem Debugger mit, welcher Typ mithilfe des DebuggerTypeProxy-Attributs (C#, Visual Basic, C++/CLI) angezeigt werden soll.

DebuggerTypeProxyAttribute Gibt einen Proxy oder einen Stand-In für einen Typ an und ändert die Art der Anzeige des Typs in Debuggerfenstern. Wenn Sie eine Variable mit einem Proxy anzeigen, repräsentiert der Proxy in der Anzeige den ursprünglichen Typ. Das Debuggervariablenfenster zeigt nur die öffentlichen Member des Proxytyps an. Private Mitglieder werden nicht angezeigt.

Dieses Attribut kann auf Folgendes angewendet werden:

  • Strukturen
  • Klassen
  • Assemblys

Hinweis

Bei systemeigenem Code wird dieses Attribut nur in C++/CLI-Code unterstützt.

Eine Typproxyklasse muss über einen Konstruktor verfügen, der ein Argument des Typs annimmt, den der Proxy ersetzen soll. Der Debugger erstellt jedes Mal eine neue Instanz der Typ-Proxyklasse, wenn er eine Variable des Zieltyps anzeigen muss. Dies kann Auswirkungen auf die Leistung haben. Vermeiden Sie daher unnötige Arbeit im Konstruktor.

Um Leistungseinbußen zu minimieren, untersucht das Auswertungsmodul für Ausdrücke die Attribute des Anzeigenvertreters des Typs nicht, es sei denn, der Typ wird vom Benutzer erweitert, indem im Debuggerfenster das Pluszeichen (+) angeklickt oder DebuggerBrowsableAttribute verwendet wird. Platzieren Sie daher keine Attribute für den Anzeigetyp selbst. Attribute können und sollten im Hauptteil des Anzeigetyps verwendet werden.

Es empfiehlt sich, dass der Typproxy als private geschachtelte Klasse innerhalb der Klasse definiert ist, auf die sich das Attribut bezieht. Auf diese Weise können interne Mitglieder problemlos darauf zugreifen.

DebuggerTypeProxyAttribute kann geerbt werden. Wenn also ein Typproxy für eine Basisklasse angegeben wird, gilt er für alle abgeleiteten Klassen, es sei denn, diese abgeleiteten Klassen geben ihren eigenen Typproxy an.

Wenn DebuggerTypeProxyAttribute auf Assemblyebene verwendet wird, gibt der Target Parameter den Typ für den zu ersetzenden Proxy an.

Ein Beispiel für die Verwendung dieses Attributs zusammen mit DebuggerDisplayAttribute und DebuggerTypeProxyAttributefinden Sie unter Verwenden des DebuggerDisplay-Attributs.

Von Bedeutung

Wenn Sie die Option " Unformatierte Struktur von Objekten in Variablenfenstern anzeigen " auswählen, wird das DebuggerDisplay Attribut ignoriert. Diese Einstellung befindet sich im Bereich Extras>Optionen im Abschnitt Alle Einstellungen>Debuggen>Allgemein.

Von Bedeutung

Wenn Sie die Option " Unformatierte Struktur von Objekten in Variablenfenstern anzeigen " auswählen, wird das DebuggerDisplay Attribut ignoriert. Diese Einstellung befindet sich im Dialogfeld ">"im Abschnitt>".

Verwenden von Generika mit DebuggerTypeProxy

Die Unterstützung für Generika ist eingeschränkt. Für C# DebuggerTypeProxy werden nur geöffnete Typen unterstützt. Ein offener Typ, auch als unstrukturierter Typ bezeichnet, ist ein generischer Typ, der nicht mit Argumenten für seine Typparameter instanziiert wird. Geschlossene Typen, auch als konstruierte Typen bezeichnet, werden nicht unterstützt.

Die Syntax für einen geöffneten Typ sieht wie folgt aus:

Namespace.TypeName<,>

Wenn Sie einen generischen Typ als Ziel DebuggerTypeProxyverwenden, müssen Sie diese Syntax verwenden. Der DebuggerTypeProxy Mechanismus leitet die Typparameter für Sie ab.

Weitere Informationen zu geöffneten und geschlossenen Typen in C# finden Sie in der C#-Sprachspezifikation, Abschnitt 20.5.2 Offene und geschlossene Typen.

Visual Basic verfügt nicht über eine offene Typsyntax, sodass Sie in Visual Basic nicht dasselbe tun können. Stattdessen müssen Sie eine Zeichenfolgendarstellung des Namens des offenen Typs verwenden.

"Namespace.TypeName'2"