共用方式為


使用 DebuggerTypeProxy 屬性

這個主題適用於:

版本

Visual Basic

C#

F#

C++

Web Developer

Express

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

Pro、Premium 和 Ultimate

標題適用於

標題適用於

標題適用於

標題適用於

標題適用於

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

這個屬性可以套用至:

  • 結構

  • 類別

  • 組件

型別 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 屬性

概念

顯示自訂資料型別

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