使用 DebuggerTypeProxy 屬性
DebuggerTypeProxyAttribute 會指定型別的 Proxy (或替代),並且變更在偵錯工具視窗中顯示型別的方式。當您檢視有 Proxy 的變數時,Proxy 會替代 [顯示] 中的原始型別。偵錯工具變數視窗只會顯示 proxy 型別的 Public 成員。私用成員不會顯示。
這個屬性可以套用至:
結構
類別
組件
型別 proxy 類別必須有建構函式 (Constructor),以取得 proxy 將會取代的型別引數。每次需要顯示目標型別的變數時,偵錯工具都會建立型別 Proxy 類別的新執行個體。這可能會影響效能。因此,除非絕對必要,您不應該在建構函式中再執行任何作業。
若要將效能的負面影響降到最低,除非使用者在偵錯工具視窗中按一下 + 符號展開型別或使用 DebuggerBrowsableAttribute,否則運算式評估工具不會檢查型別顯示 proxy 的屬性。因此,您不應該將屬性置於顯示型別本身,屬性可以而且應該使用於顯示型別的主體中。
型別 proxy 是屬性所針對類別中的私用巢狀類別,這是很好的作法。這可以讓它輕易存取內部成員。
如果在組譯碼層級使用 DebuggerTypeProxyAttribute,Target 參數則會指定 proxy 將要取代的型別。
如需如何一起使用這個屬性以及 DebuggerDisplayAttribute 和 DebuggerTypeProxyAttribute 的範例,請參閱使用 DebuggerDisplay 屬性。
搭配 DebuggerTypeProxy 使用泛型
對泛型的支援是有限的。對 C# 來說,DebuggerTypeProxy 只支援開啟型別。開啟型別 (也稱為未建構型別) 是尚未使用其型別參數之引數執行個體化的泛型型別。不支援封閉型別 (也稱為建構型別)。
開啟型別的語法如下所示:
Namespace.TypeName<,>
如果您使用泛型型別當做 DebuggerTypeProxy 中的目標,就必須使用此語法。DebuggerTypeProxy 機制會為您推斷型別參數。
如需 C# 中開啟和封閉型別的詳細資訊,請參閱 C# 語言規格,第 20.5.2 節<開啟和封閉型別>。
Visual Basic 沒有開啟型別的語法,因此無法在 Visual Basic 中執行相同的動作。取而代之的是,您必須使用開啟型別名稱的字串表示。
"Namespace.TypeName'2"