Verwenden des DebuggerTypeProxy-Attributs
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 in der Anzeige dargestellt. 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 vom Proxy ersetzten Typs verwendet. 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 bei Verwendung des DebuggerBrowsableAttribute-Attributs. 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 durch den Proxy ersetzten Typ an.
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 in DebuggerTypeProxy einen generischen Typ als Ziel 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