Řekněte ladicímu programu, jaký typ se má zobrazit pomocí atributu DebuggerTypeProxy (C#, Visual Basic, C++/CLI).
DebuggerTypeProxyAttribute určuje proxy server nebo stand-in pro typ a změní způsob zobrazení typu v oknech ladicího programu. Když zobrazíte proměnnou s proxy serverem, proxy je zkratka pro původní typ v displeji. V okně proměnné ladicího programu se zobrazí pouze veřejné členy typu proxy serveru. Soukromé členy se nezobrazují.
Tento atribut lze použít pro:
- Struktury
- Třídy
- Sestavení
Poznámka:
Pro nativní kód je tento atribut podporován pouze v kódu C++/CLI.
Třída proxy typu musí mít konstruktor, který přebírá argument typu, který proxy nahradí. Ladicí program vytvoří novou instanci třídy proxy typu pokaždé, když potřebuje zobrazit proměnnou cílového typu. To může mít vliv na výkon. V důsledku toho byste neměli v konstruktoru dělat žádné další práce, než je naprosto nezbytné.
Aby se minimalizovaly sankce za výkon, vyhodnocovače výrazů nezkoumá atributy na zobrazovaném proxy serveru typu, pokud uživatel nezvětší typ kliknutím na symbol + v okně ladicího programu nebo použitím DebuggerBrowsableAttribute. Proto byste neměli umisťovat atributy do samotného typu zobrazení. Atributy lze a měly by být použity v textu typu zobrazení.
Je vhodné, aby typ proxy byl privátní vnořenou třídou v rámci třídy, na kterou cílí atribut. To umožňuje snadný přístup k interním členům.
DebuggerTypeProxyAttribute lze dědit, takže pokud je pro základní třídu zadán proxy typ, použije se u všech odvozených tříd, pokud tyto odvozené třídy nezadávají vlastní typ proxy.
Pokud DebuggerTypeProxyAttribute se použije na úrovni sestavení, Target
parametr určuje typ, který proxy server nahradí.
Příklad použití tohoto atributu spolu s DebuggerDisplayAttribute a , viz Použití DebuggerDisplay AtributDebuggerTypeProxyAttribute.
Důležité
Pokud je v dialogovém okně Nástroje / Možnosti / Ladění zaškrtnuté políčko Zobrazit nezpracovanou strukturu objektů v oknech proměnných, DebuggerDisplay
bude atribut ignorován.
Použití obecných typů s debuggerTypeProxy
Podpora obecných typů je omezená. V jazyce C# DebuggerTypeProxy
podporuje pouze otevřené typy. Otevřený typ, označovaný také jako nekonstruovaný typ, je obecný typ, který nebyl vytvořen s argumenty pro parametry typu. Uzavřené typy, označované také jako konstruované typy, nejsou podporovány.
Syntaxe otevřeného typu vypadá takto:
Namespace.TypeName<,>
Pokud jako cíl DebuggerTypeProxy
použijete obecný typ, musíte použít tuto syntaxi. Mechanismus DebuggerTypeProxy
odvodí parametry typu za vás.
Další informace o otevřených a uzavřených typech v jazyce C# naleznete v části 20.5.2 Otevřené a uzavřené typy.
Jazyk Visual Basic nemá syntaxi otevřeného typu, takže v jazyce Visual Basic nemůžete dělat totéž. Místo toho musíte použít řetězcovou reprezentaci názvu otevřeného typu.
"Namespace.TypeName'2"