告訴偵錯工具使用 DebuggerTypeProxy 屬性顯示的類型 (C#、Visual Basic、C++/CLI)
DebuggerTypeProxyAttribute 會指定類型的 Proxy (或替代),並且變更在偵錯工具視窗中顯示類型的方式。 當您檢視有 Proxy 的變數時,Proxy 會替代 [顯示] 中的原始類型。 偵錯工具變數視窗只會顯示 proxy 型別的 Public 成員。 私用成員不會顯示。
這個屬性可以套用至:
- 結構
- 類別
- 組件
注意
針對機器碼,此屬性僅支援 C++/CLI 程式碼。
類型 Proxy 類別必須具有建構函式,才能接受 Proxy 將取代之類型的引數。 每次需要顯示目標類型的變數時,偵錯工具都會建立類型 Proxy 類別的新執行個體。 這種行為可能會影響效能。 因此,除非絕對必要,否則不要在建構函式中再執行任何作業。
為了將效能的負面影響降到最低,除非使用者在偵錯工具視窗中按一下 + 符號展開類型或使用 DebuggerBrowsableAttribute,否則運算式評估工具不會檢查類型顯示 Proxy 的屬性。 因此,您不應該將屬性放在顯示類型本身上, 屬性可以而且應該用於顯示類型的主體中。
讓類型 Proxy 成為做為屬性目標之類別內的私用巢狀類別,會是較理想的做法。 這樣就可方便它存取內部成員。
DebuggerTypeProxyAttribute 可以繼承,因此如果在基底類別上指定了類型 Proxy,它將套用於任何衍生類別 (除非這些衍生類別指定了自己的類型 Proxy)。
如果在組件層級使用 DebuggerTypeProxyAttribute,則 Target
參數會指定 Proxy 將要取代的類型。
如需如何使用此屬性以及 DebuggerDisplayAttribute 和 DebuggerTypeProxyAttribute 的範例,請參閱使用 DebuggerDisplay 屬性。
重要
如果已核取 [工具 / 選項 / 偵錯] 對話方塊中的 [在變數視窗中顯示物件的原始結構] 核取方塊,即忽略 DebuggerDisplay
屬性。
使用泛型搭配 DebuggerTypeProxy
對泛型僅提供有限的支援。 對 C# 來說,DebuggerTypeProxy
只支援開啟類型。 開啟類型也稱為未建構類型,是尚未使用其型別參數的引數具現化的泛型類型。 不支援封閉類型 (也稱為建構類型)。
開啟類型的語法如下所示:
Namespace.TypeName<,>
如果您在 DebuggerTypeProxy
中使用泛型類型做為目標,就必須使用此語法。 DebuggerTypeProxy
機制會自動推斷型別參數。
如需 C# 中開放和封閉類型的詳細資訊,請參閱 C# 語言規格的第 20.5.2 節 <開啟和封閉類型>。
Visual Basic 沒有開放類型語法,因此無法在 Visual Basic 中執行相同的動作。 您必須改用開放類型名稱的字串表示。
"Namespace.TypeName'2"