Sdílet prostřednictvím


Architektura vizualizéru

Architektura ladicí program visualizer má dvě části:

  • Ladicí program straně běží v rámci ladicí program sady Visual Studio.Ladicí program straně kód vytvoří a zobrazí uživatelské rozhraní pro vaše visualizer.

  • Pozastaven straně běží v rámci procesu sady Visual Studio je ladění ( pozastaven).

Visualizer je součástí ladicí program, která umožňuje ladicí program k zobrazení (vizualizace) obsah datového objektu ve formě smysluplné, srozumitelný.Některé visualizers podporují také úpravy datového objektu.Tím, že napíšeme vlastní visualizers, můžete rozšířit ladicí program ke zpracování vlastní vlastní datové typy.

Objekt dat, který má být zobrazována je umístěn v rámci procesu ladění ( pozastaven proces).Uživatelské rozhraní, které se zobrazí data je vytvořen v rámci procesu ladicí program sady Visual Studio:

Proces ladicí program

Pozastaven procesu

Ladicí program uživatelského rozhraní (DataTips, okno kukátka QuickWatch)

Datový objekt, který má být zobrazována

Chcete-li vizualizovat datový objekt v rámci rozhraní ladicí program, je nutné kód ke komunikaci mezi těmito dvěma procesy.V důsledku toho se architektura visualizer se skládá ze dvou částí: ladicí program straně kód a pozastaven straně kódu.

Ladicí program straně kód vytvoří vlastní uživatelského rozhraní, které lze volat z rozhraní ladicí program, například popis dat, okno kukátka nebo QuickWatch.Rozhraní visualizer je vytvořen pomocí DialogDebuggerVisualizer třídy a IDialogVisualizerService rozhraní.Jako Visualizer rozhraní API, DialogDebuggerVisualizer a IDialogVisualizerService se nenachází v Microsoft.VisualStudio.DebuggerVisualizers oboru názvů.

Ladicí program straně

Pozastaven straně

Třída DialogDebuggerVisualizer

Rozhraní IDialogVisualizerService

Datový objekt

Uživatelské rozhraní získá data, která mají být zobrazována od poskytovatele objektu, která již existuje na straně pro ladicí program:

Ladicí program straně

Pozastaven straně

Třída DialogDebuggerVisualizer

Rozhraní IDialogVisualizerService

Datový objekt

Objekt zprostředkovatele (implementuje IVisualizerObjectProvider)

Na straně pozastaven volána zdroj objektu je odpovídající objekt:

Ladicí program straně

Pozastaven straně

Třída DialogDebuggerVisualizer

Rozhraní IDialogVisualizerService

Datový objekt

Objekt zprostředkovatele (implementuje IVisualizerObjectProvider)

Objekt zdroje (odvozen od VisualizerObjectSource)

Objekt zprostředkovatele poskytuje data objektu, který má být zobrazována k visualizer uživatelského rozhraní.Objekt zprostředkovatel získá data objektu ze zdroje objektu.Objekt zprostředkovatele a zdroj objektu poskytují rozhraní API pro komunikaci data objektu mezi straně ladicí program a na straně debugee.

Každý visualizer, musíte získat objekt dat, který má být zobrazována.Následující tabulka uvádí odpovídající rozhraní API, že k tomuto účelu použít objekt zprostředkovatele a zdroj objektu:

Objekt zprostředkovatele

Zdroj objektu

GetData

—nebo—

GetObject

GetData

Upozornění zprostředkovatele objektu můžete použít buď GetData nebo GetObject.Buď rozhraní API, které jsou výsledkem volání GetData ve zdrojovém objektu.Během volání VisualizerObjectSource.GetData vyplní [System.IO.Stream], která představuje serializovaném formátu objektu, který je právě zobrazována.

IVisualizerObjectProvider.GetObjectdeserializuje data zpět do objektu formulář, který pak lze zobrazit v uživatelském rozhraní vytvoříte pomocí DialogDebuggerVisualizer.IVisualizerObjectProvider.GetDatavyplní data jako nezpracovanou [System.IO.Stream], které musí při deserializaci sami.IVisualizerObjectProvider.GetObjectfunguje voláním IVisualizerObjectProvider.GetData k získání serializovaný [System.IO.Stream], pak deserializaci data.Použití IVisualizerObjectProvider.GetData když objekt není serializovatelný podle .NET a vyžaduje vlastní serializace.V takovém případě musíte také přepsat VisualizerObjectSource.Serialize metody.

Pokud vytváříte visualizer jen pro čtení, jednosměrná komunikace s GetData nebo GetObject je dostačující.Pokud vytváříte visualizer, který podporuje úpravy datových objektů, je nutné informace.Musíte být také odeslat na datový objekt od zprostředkovatele objektu zpět na zdrojový objekt.V následující tabulce jsou uvedeny rozhraní API zdrojový objekt použitý pro tento účel a zprostředkovatele objektu:

Objekt zprostředkovatele

Zdroj objektu

ReplaceData

—nebo—

ReplaceObject

CreateReplacementObject

Všimněte si, znovu, že jsou k dispozici dvě rozhraní API, které můžete použít zprostředkovatele objektu.Vždy odeslání dat ze zprostředkovatele objektu do objektu zdroje jako [System.IO.Stream], ale ReplaceData vyžaduje, aby vám k serializaci objektu do [System.IO.Stream] sami.

ReplaceObjectobjekt, který zadáte, provede serializuje do aplikace [System.IO.Stream], poté zavolá ReplaceData k odeslání [System.IO.Stream] k CreateReplacementObject.

Pomocí jedné z metod nahradit vytvoří nový objekt data v pozastaven, který nahrazuje objektu jsou zobrazována.Pokud chcete změnit obsah původní objekt bez nutnosti vyměnit ji, použijte jednu z metod převodu, které jsou uvedeny v následující tabulce.Tato rozhraní API přenosu dat v obou směrech současně, bez nutnosti vyměnit objekt, který je právě zobrazována:

Objekt zprostředkovatele

Zdroj objektu

TransferData

—nebo—

TransferObject

TransferData

Viz také

Úkoly

Postupy: Zápis vizualizéru

Návod: Zápis vizualizéru v jazyce C#

Návod: Zápis vizualizéru v jazyce Visual Basic

Návod: Zápis vizualizéru v jazyce Visual Basic

Koncepty

Hlediska zabezpečení vizualizéru