Delen via


Vertel het foutopsporingsprogramma welk type moet worden weergegeven met behulp van het kenmerk DebuggerTypeProxy (C#, Visual Basic, C++/CLI)

DebuggerTypeProxyAttribute geeft een proxy of stand-in voor een type en wijzigt de manier waarop het type wordt weergegeven in foutopsporingsprogrammavensters. Wanneer u een variabele met een proxy bekijkt, neemt de proxy de plaats in van het oorspronkelijke type in de weergave. In het venster van de foutopsporingsprogrammavariabele worden alleen de openbare leden van het proxytype weergegeven. Privéleden worden niet weergegeven.

Dit kenmerk kan worden toegepast op:

  • Structures
  • Klassen
  • Assemblies

Opmerking

Voor systeemeigen code wordt dit kenmerk alleen ondersteund in C++/CLI-code.

Een typeproxyklasse moet een constructor hebben die een argument van het type gebruikt dat door de proxy moet worden vervangen. Het foutopsporingsprogramma maakt een nieuw exemplaar van de typeproxyklasse telkens wanneer er een variabele van het doeltype moet worden weergegeven. Dit kan gevolgen hebben voor de prestaties. Als gevolg hiervan voorkomt u onnodig werk in de constructor.

Om prestatieverlies te minimaliseren, onderzoekt het expressie-evaluatieprogramma de attributen op de weergaveproxy van het type niet, tenzij het type door de gebruiker wordt uitgevouwen door op het plusteken in het foutopsporingsprogrammavenster te klikken of door het gebruik van DebuggerBrowsableAttribute. Plaats daarom geen kenmerken op het weergavetype zelf. Kenmerken kunnen en moeten worden gebruikt in de inhoud van het displaytype.

Het is een goed idee dat de typeproxy een privé geneste klasse is binnen de klasse waarop het attribuut is gericht. Hierdoor kan het eenvoudig toegang krijgen tot interne leden.

DebuggerTypeProxyAttribute kan worden overgenomen, dus als een typeproxy wordt opgegeven op een basisklasse die van toepassing is op eventuele afgeleide klassen, tenzij deze afgeleide klassen hun eigen typeproxy opgeven.

Als DebuggerTypeProxyAttribute op assemblyniveau wordt gebruikt, geeft de Target parameter het type op dat de proxy moet vervangen.

Zie voor een voorbeeld van hoe u dit attribuut samen met DebuggerDisplayAttribute en DebuggerTypeProxyAttribute kunt gebruiken, Het kenmerk DebuggerDisplay gebruiken.

Belangrijk

Als u de optie Onbewerkte structuur van objecten weergeven in variabelenvensters selecteert, wordt het DebuggerDisplay kenmerk genegeerd. Deze instelling bevindt zich in het deelvenster Extra>Opties in de sectie Alle instellingen>Debugging>Algemeen.

Belangrijk

Als u de optie Onbewerkte structuur van objecten weergeven in variabelenvensters selecteert, wordt het DebuggerDisplay kenmerk genegeerd. Deze instelling bevindt zich in het dialoogvenster Extra>Opties in de sectie Foutopsporing>Algemeen.

Generics gebruiken met DebuggerTypeProxy

Ondersteuning voor generics is beperkt. Voor C# DebuggerTypeProxy ondersteunt alleen open typen. Een open type, ook wel een niet-geconstrueerd type genoemd, is een algemeen type dat niet wordt geïnstantieerd met argumenten voor de bijbehorende typeparameters. Gesloten typen, ook wel samengestelde typen genoemd, worden niet ondersteund.

De syntaxis voor een open type ziet er als volgt uit:

Namespace.TypeName<,>

Als u een algemeen type als doel gebruikt DebuggerTypeProxy, moet u deze syntaxis gebruiken. Het DebuggerTypeProxy mechanisme bepaalt de typeparameters voor u.

Zie voor meer informatie over open en gesloten typen in C# de C#-taalspecificatie, sectie 20.5.2 Open en gesloten typen.

Visual Basic heeft geen open type syntaxis, dus u kunt niet hetzelfde doen in Visual Basic. In plaats daarvan moet u een tekenreeksweergave van de naam van het geopende type gebruiken.

"Namespace.TypeName'2"