HOW TO:撰寫視覺化檢視
這個主題適用於:
版本 |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
僅限 Managed |
||||
Pro、Premium 和 Ultimate |
僅限 Managed |
您可以為任何 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 方法。