共用方式為


使用 DebuggerTypeProxy 屬性

更新:2007 年 11 月

這個主題適用於:

版本

Visual Basic

C#

C++

Web Developer

Express 版

標題適用於 標題適用於 標題適用於 標題適用於

Standard 版

標題適用於

標題適用於

標題適用於

標題適用於

Pro/Team 版

標題適用於

標題適用於

標題適用於

標題適用於

表格圖例:

標題適用於

套用

標題不適用於

不套用

預設會套用主題但隱藏命令

預設隱藏的命令。

DebuggerTypeProxyAttribute 會指定型別的 Proxy (或替代),並且變更在偵錯工具視窗中顯示型別的方式。當您檢視有 Proxy 的變數時,Proxy 會替代 [顯示] 中的原始型別。偵錯工具變數視窗只會顯示 proxy 型別的 Public 成員。不會顯示 Private 成員。

這個屬性可以套用至:

  • 結構

  • 類別

  • 組件

型別 proxy 類別必須有建構函式 (Constructor),以取得 proxy 將會取代的型別引數。每次需要顯示目標型別的變數時,偵錯工具都會建立型別 Proxy 類別的新執行個體。這可能對效能會造成影響。因此,除非絕對必要,請勿在建構函式中進行任何多餘的工作。

若要將效能的負面影響降到最低,除非使用者在偵錯工具視窗中按一下 + 符號展開型別或使用 DebuggerBrowsableAttribute,否則運算式評估工具不會檢查型別顯示 proxy 的屬性。因此,您不應該將屬性置於顯示型別本身,屬性可以而且應該使用於顯示型別的主體中。

型別 proxy 是屬性所針對類別中的私用巢狀類別,這是很好的作法。這可以讓它輕易存取內部成員。

如果在組譯碼層級使用 DebuggerTypeProxyAttribute,Target 參數則會指定 proxy 將要取代的型別。

如需如何一起使用這個屬性以及 DebuggerDisplayAttributeDebuggerTypeProxyAttribute 的範例,請參閱使用 DebuggerDisplay 屬性

搭配 DebuggerTypeProxy 使用泛型

對泛型的支援是有限的。對 C# 來說,DebuggerTypeProxy 只支援開啟型別。開啟型別 (也稱為未建構型別) 是尚未使用其型別參數之引數執行個體化的泛型型別。不支援封閉型別 (也稱為建構型別)。

開啟型別的語法如下所示:

Namespace.TypeName<,>

如果您使用泛型型別當做 DebuggerTypeProxy 中的目標,就必須使用此語法。DebuggerTypeProxy 機制會為您推斷型別參數。

如需 C# 中開啟和封閉型別的詳細資訊,請參閱 C# 語言規格,第 20.5.2 節<開啟和封閉型別>。

Visual Basic 沒有開啟型別的語法,因此無法在 Visual Basic 中執行相同的動作。取而代之的是,您必須使用開啟型別名稱的字串表示。

"Namespace.TypeName'2"

請參閱

概念

顯示自訂資料型別

使用偵錯工具顯示屬性增強偵錯功能

參考

使用 DebuggerDisplay 屬性