HOW TO:撰寫視覺化檢視
您可以為任何 Managed 類別的物件撰寫自訂視覺化檢視,除了 Object 或 Array 以外。
偵錯工具視覺化檢視的架構分為兩部分:
「偵錯工具端」(Debugger Side) 會在 Visual Studio 偵錯工具中執行。偵錯工具端的程式碼會建立並顯示視覺化檢視的使用者介面。
「偵錯項目端」(Debuggee Side) 會在 Visual Studio 正在偵錯的處理序 (亦即「偵錯項目」(Debuggee)) 中執行。
您要進行視覺化的資料物件 (例如,String 物件) 會存在於偵錯項目處理序中。因此,偵錯項目端必須將該資料物件傳送至偵錯工具端,然後偵錯工具端才能使用您建立的使用者介面顯示這個資料物件。
偵錯工具端會從實作 IVisualizerObjectProvider 介面的「物件提供者」(Object Provider) 中,收到這個要進行視覺化的資料物件。偵錯項目端會透過「物件來源」(Object Source) (衍生自 VisualizerObjectSource) 傳送這個資料物件。物件提供者也可以將資料送回物件來源,以便您撰寫可編輯和顯示資料的視覺化檢視。物件提供者可被覆寫,以便與運算式評估工具進行溝通,也就是與物件來源溝通。
偵錯項目端和偵錯工具端是透過 Stream 相互溝通。提供的方法是用來將資料物件序列化至 Stream,並將 Stream 還原序列化至資料物件中。
偵錯項目端的程式碼是使用 DebuggerVisualizer 屬性 (DebuggerVisualizerAttribute) 進行指定。
若要在偵錯工具端建立視覺化檢視使用者介面,您必須建立繼承自 DialogDebuggerVisualizer 的類別,並覆寫 DialogDebuggerVisualizer.Show 方法顯示此介面。
您可以使用 IDialogVisualizerService,從您的視覺化檢視顯示 Windows Form、對話方塊和控制項。
對泛型型別的支援是有限的。只有在泛型型別是開啟型別時,才能夠為泛型型別目標撰寫視覺化檢視。這項限制與使用 DebuggerTypeProxy 屬性時的限制相同。如需詳細資訊,請參閱使用 DebuggerTypeProxy 屬性。
自訂視覺化檢視會有安全性考量。請參閱視覺化檢視安全性考量。
下列程序提供在建立視覺化檢視時所需的概觀。如需詳細說明,請參閱逐步解說:在 C# 中撰寫視覺化檢視。
若要建立偵錯工具端
請使用 IVisualizerObjectProvider 方法,取得偵錯工具端的視覺化物件。
建立繼承自 DialogDebuggerVisualizer 的類別。
覆寫 DialogDebuggerVisualizer.Show 方法以顯示介面。使用 IDialogVisualizerService 方法以將 Windows Form、對話方塊和控制項顯示為介面的一部分。
套用 DebuggerVisualizerAttribute,並賦予它一個視覺化檢視 (DialogDebuggerVisualizer)。
若要建立偵錯項目端
套用 DebuggerVisualizerAttribute,並賦予它一個視覺化檢視 (DialogDebuggerVisualizer) 和物件來源 (VisualizerObjectSource)。如果您忽略了物件來源,將使用預設的物件來源。
如果您希望視覺化檢視能夠編輯和顯示資料物件,您必須從 VisualizerObjectSource 覆寫 TransferData 或 CreateReplacementObject 方法。