Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DebuggerTypeProxyAttribute określa serwer proxy lub stand-in dla typu i zmienia sposób wyświetlania typu w oknach debugera. Podczas wyświetlania zmiennej, która ma proxy, proxy pełni funkcję oryginalnego typu w oknie wyświetlania. Okno zmiennych debugera wyświetla tylko publiczne elementy członkowskie typu proxy. Prywatne elementy członkowskie nie są wyświetlane.
Ten atrybut można zastosować do:
- Structures
- Klasy
- Assemblies
Uwaga / Notatka
W przypadku kodu natywnego ten atrybut jest obsługiwany tylko w kodzie C++/CLI.
Klasa proxy musi mieć konstruktor, który przyjmuje argument typu, którego proxy ma zastąpić. Debuger tworzy nowe wystąpienie klasy zastępczej typu za każdym razem, gdy musi wyświetlić zmienną typu docelowego. Może to mieć wpływ na wydajność. W rezultacie należy unikać niepotrzebnej pracy w konstruktorze.
Aby zminimalizować koszty dotyczące wydajności, ewaluator wyrażeń nie sprawdza atrybutów na proxy wyświetlania typu, chyba że typ został rozszerzony przez użytkownika przez kliknięcie symbolu + w oknie debugera lub przy użyciu DebuggerBrowsableAttribute. W związku z tym nie umieszczaj atrybutów na samym typie wyświetlania. Atrybuty mogą i powinny być używane w treści typu wyświetlania.
Dobrym pomysłem jest, aby proxy typu było prywatną klasą zagnieżdżoną w klasie, do której odnosi się atrybut. Dzięki temu można łatwo uzyskiwać dostęp do wewnętrznych członków.
DebuggerTypeProxyAttribute można dziedziczyć, więc jeśli serwer proxy typu jest określony w klasie bazowej, ma zastosowanie do dowolnych klas pochodnych, chyba że te klasy pochodne określą własny serwer proxy typu.
Jeśli DebuggerTypeProxyAttribute jest używany na poziomie zestawu, parametr Target określa typ proxy do zastąpienia.
Aby zapoznać się z przykładem użycia tego atrybutu wraz z elementami DebuggerDisplayAttribute i DebuggerTypeProxyAttribute, zobacz Using the DebuggerDisplay Attribute (Używanie atrybutu DebuggerDisplay).
Ważne
Jeśli wybierzesz opcję Pokaż nieprzetworzone struktury obiektów w oknach zmiennych , DebuggerDisplay atrybut zostanie zignorowany. To ustawienie znajduje się w okienku Narzędzia>Opcje w sekcji Wszystkie ustawienia>Debugowanie>ogólne .
Ważne
Jeśli wybierzesz opcję Pokaż nieprzetworzone struktury obiektów w oknach zmiennych , DebuggerDisplay atrybut zostanie zignorowany. To ustawienie znajduje się w oknie dialogowym Opcje narzędzi> w sekcji Ogólne debugowania>.
Używanie typów ogólnych z DebuggerTypeProxy
Obsługa typów ogólnych jest ograniczona. W przypadku języka C# DebuggerTypeProxy obsługuje tylko typy otwarte. Typ otwarty, nazywany również typem nie skonstruowanym, jest typem ogólnym, który nie jest zainicjowany z argumentami dla jego parametrów typu. Typy zamknięte, nazywane również typami konstruowanymi, nie są obsługiwane.
Składnia typu otwartego wygląda następująco:
Namespace.TypeName<,>
Jeśli używasz typu ogólnego jako celu w programie DebuggerTypeProxy, musisz użyć tej składni. Mechanizm DebuggerTypeProxy wywnioskowuje dla Ciebie parametry typu.
Aby uzyskać więcej informacji na temat otwartych i zamkniętych typów w języku C#, zobacz specyfikację języka C#, sekcję 20.5.2 Otwieranie i zamykanie typów.
Język Visual Basic nie ma składni typu otwartego, więc nie można wykonać tej samej czynności w języku Visual Basic. Zamiast tego należy użyć ciągowej reprezentacji nazwy typu otwartego.
"Namespace.TypeName'2"