Megosztás a következőn keresztül:


Vizualizációs architektúra

A hibakereső vizualizációk architektúrája két részből áll:

  • A hibakereső oldal a Visual Studio hibakeresőjén belül fut. A hibakeresőoldali kód létrehozza és megjeleníti a vizualizáció felhasználói felületét.

  • A hibakeresési oldal a Visual Studio hibakeresési folyamatán belül fut (a hibakeresés).

    A vizualizáció egy hibakereső összetevő, amely lehetővé teszi, hogy a hibakereső értelmezhető, érthető formában jelenítse meg (vizualizálja) az adatobjektum tartalmát. Egyes vizualizációk az adatobjektum szerkesztését is támogatják. Egyéni vizualizációk írásával kiterjesztheti a hibakeresőt a saját egyéni adattípusainak kezelésére.

    A vizualizálandó adatobjektum a hibakeresési folyamaton (a hibakeresési folyamaton) belül található. Az adatokat megjelenítő felhasználói felület a Visual Studio hibakereső folyamatán belül jön létre:

Hibakereső folyamat Hibakeresési folyamat
Hibakereső felhasználói felülete (Adattippek, Figyelőablak, Gyorsóra) Vizualizálandó adatobjektum

Az adatobjektum hibakereső felületen való megjelenítéséhez kódra van szükség a két folyamat közötti kommunikációhoz. Ennek következtében a vizualizációs architektúra két részből áll: hibakereső oldalkódból és hibakeresési oldalkódból .

A hibakeresőoldali kód létrehozza a saját felhasználói felületét, amely meghívható a hibakereső felületről, például egy adatleírásból, a figyelőablakból vagy a QuickWatch-ból. A vizualizáló felület a DialogDebuggerVisualizer osztály és a IDialogVisualizerService felület használatával jön létre. A Visualizer API-khoz hasonlóan a DialogDebuggerVisualizer és az IDialogVisualizerService is megtalálható a Microsoft.VisualStudio.DebuggerVisualizers névtérben.

Debugger oldal Hibakeresési oldal
DialogDebuggerVisualizer osztály

IDialogVisualizerService Interface
Adatobjektum

A felhasználói felület lekéri a vizualizálandó adatokat egy objektumszolgáltatótól, amely a hibakereső oldalán található:

Hibakereső felület Hibakeresési oldal
DialogDebuggerVisualizer osztály

IDialogVisualizerService Interfész
Adatobjektum
Objektumszolgáltató (implementálja IVisualizerObjectProvider)

A hibakeresési oldalon található egy objektumforrásnak nevezett objektum:

Hibakereső oldal Hibakeresési oldal
DialogDebuggerVisualizer osztály

IDialogVisualizerService Interface
Adatobjektum
Objektumszolgáltató (implementálja IVisualizerObjectProvider) Az objektum forrása (VisualizerObjectSource alapján származik)

Az Objektumszolgáltató biztosítja a vizualizáció felhasználói felületén megjelenítendő objektumadatokat. Az objektumszolgáltató lekéri az objektumadatokat az objektumforrásból. Az objektumszolgáltató és az objektumforrás API-kat biztosít az objektumadatok hibakereső és hibakeresési oldal közötti kommunikációjához.

Minden vizualizálónak meg kell szereznie az adatobjektumot a vizualizációhoz. Az alábbi táblázat a megfelelő API-kat mutatja be, amelyeket az objektumszolgáltató és az objektumforrás erre a célra használ:

Objektumszolgáltató Objektumforrás
GetData

— vagy —

GetObject
GetData

Figyelje meg, hogy az objektumszolgáltató használhatja a GetData-t vagy a GetObject-t. Bármelyik API az Object Source-on belüli GetData hívást eredményez. A Microsoft.VisualStudio.DebuggerVisualizers.VisualizerObjectSource.GetData hívás kitölt egy System.IO.Stream-t, amely az éppen vizualizált objektum szerializált formáját képviseli.

Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetObject deszerializálja az adatokat objektumformává, amelyet aztán megjeleníthet a létrehozott DialogDebuggerVisualizerfelhasználói felületen. Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetData tölti ki az adatokat nyersként, amit önnek kell deszerializálnia. Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetObject úgy működik, hogy meghívja Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetData a szerializált Stream adatok megszerzésére, majd deszerializálja az adatokat. Akkor használható Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetData , ha az objektum nem szerializálható a .NET-ben, és egyéni szerializálást igényel. Ebben az esetben felül kell írnia a Microsoft.VisualStudio.DebuggerVisualizers.VisualizerObjectSource.Serialize metódust is.

Ha írásvédett vizualizációt hoz létre, az GetData vagy GetObject egyirányú kommunikáció elegendő. Ha olyan vizualizációt hoz létre, amely támogatja az adatobjektumok szerkesztését, többet kell tennie. Önnek képesnek kell lennie egy adatobjektumot visszaküldeni az objektumszolgáltatótól az objektumforrásnak is. Az alábbi táblázat az ehhez a célra használt objektumszolgáltatót és objektumforrás API-kat mutatja be:

Objektumszolgáltató Objektumforrás
ReplaceData

— vagy —

ReplaceObject
CreateReplacementObject

Figyelje meg ismét, hogy az objektumszolgáltató két API-t használhat. A rendszer mindig az objektumszolgáltatótól az objektumforrásnak küld adatokat Stream formában, de ReplaceData megköveteli, hogy az objektumot saját maga szerializálja Stream formátumba.

ReplaceObject egy ön által megadott objektumot vesz fel, szerializálja azt egy Stream-vé, majd meghívja a ReplaceData-t, hogy a Stream-t elküldje a CreateReplacementObject-nek.

A Csere metódusok egyikével létrehoz egy új adatobjektumot a hibakeresésben, amely lecseréli a vizualizált objektumot. Ha lecserélése nélkül szeretné módosítani az eredeti objektum tartalmát, használja az alábbi táblázatban látható átviteli módszerek egyikét. Ezek az API-k egyszerre mindkét irányban továbbítják az adatokat a vizualizáció alatt álló objektum cseréje nélkül:

Objektumszolgáltató Objektumforrás
TransferData

— vagy —

TransferObject
TransferData