Freigeben über


Verwenden des DebuggerTypeProxy-Attributs

Dieses Thema gilt für folgende Anwendungsbereiche:

Edition

Visual Basic

C#

F#

C++

Web Developer

Express

Thema ist vorhanden Thema ist vorhanden Thema ist vorhanden Thema ist vorhanden Thema ist vorhanden

Pro, Premium und Ultimate

Thema ist vorhanden

Thema ist vorhanden

Thema ist vorhanden

Thema ist vorhanden

Thema ist vorhanden

DebuggerTypeProxyAttribute gibt einen Proxy bzw. Vertreter für einen Typ an und ändert die Art, wie dieser Typ in Debuggerfenstern angezeigt wird. Wenn Sie eine Variable mit einem Proxy anzeigen, wird der Proxy stellvertretend für den ursprünglichen Typ angezeigt. Im Debuggervariablenfenster werden nur die öffentlichen Member des Proxytyps angezeigt. Private Member werden nicht angezeigt.

Mögliche Zuweisungen dieses Attributs:

  • Strukturen

  • Klassen

  • Assemblys

Eine Typproxyklasse muss über einen Konstruktor verfügen, der ein Argument des Typs verwendet, den der Proxy ersetzt. Der Debugger erstellt immer dann eine neue Instanz der Typproxyklasse, wenn eine Variable des Zieltyps angezeigt werden muss. Dies kann sich auf die Leistung auswirken. Daher sollten Sie nicht mehr als unbedingt erforderlich mit dem Konstruktor arbeiten.

Zur Minimierung von Leistungseinbußen werden die Attribute des Anzeigeproxys des Typs nicht von der Ausdrucksauswertung untersucht, es sei denn, der Typ wird erweitert. Dies geschieht, wenn der Benutzer im Debuggerfenster auf das Plussymbol (+) klickt oder wenn das DebuggerBrowsableAttribute-Attribut verwendet wird. Deshalb sollten Sie dem Anzeigetyp selbst keine Attribute hinzufügen. Attribute können und sollen im Text des Anzeigetyps verwendet werden.

Der Typproxy sollte eine private geschachtelte Klasse innerhalb der Klasse sein, auf die das Attribut abzielt. Dadurch ist der Zugriff auf interne Member problemlos möglich.

Wenn DebuggerTypeProxyAttribute auf der Assemblyebene verwendet wird, gibt der Target-Parameter den Typ an, der durch den Proxy ersetzt wird.

Ein Beispiel für die Verwendung dieses Attributs in Verbindung mit DebuggerDisplayAttribute und DebuggerTypeProxyAttribute finden Sie unter Verwenden des DebuggerDisplay-Attributs.

Verwenden von Generika mit DebuggerTypeProxy

Die Unterstützung für Generika ist eingeschränkt. In C# unterstützt DebuggerTypeProxy nur offene Typen. Ein offener Typ, d. h. ein nicht konstruierter Typ, ist ein generischer Typ, der nicht mit Argumenten für seine Typparameter instanziiert wurde. Geschlossene Typen, d. h. konstruierte Typen, werden nicht unterstützt.

Die Syntax für einen offenen Typ sieht wie folgt aus:

Namespace.TypeName<,>

Wenn Sie als Ziel in DebuggerTypeProxy einen generischen Typ angeben, müssen Sie diese Syntax verwenden. Der DebuggerTypeProxy-Mechanismus leitet die Typparameter für Sie her.

Weitere Informationen zu offenen und geschlossenen Typen in C# finden Sie unter C#-Sprachspezifikation im Abschnitt 20.5.2 über offene und geschlossene Typen.

In Visual Basic gibt es keine Syntax für offene Typen. daher ist dies in Visual Basic nicht möglich. Stattdessen müssen Sie eine Zeichenfolgendarstellung für den Namen des offenen Typs verwenden.

"Namespace.TypeName'2"

Siehe auch

Referenz

Verwenden des DebuggerDisplay-Attributs

Konzepte

Anzeigen von benutzerdefinierten Datentypen

Verbessern des Debuggens mit den Debuggeranzeigeattributen