Freigeben über


IModelObject2-Schnittstelle (dbgmodel.h)

Die IModelObject2 Schnittstelle kapselt den Begriff eines Objekts - ob es sich bei diesem Objekt um eine ganze Zahl, eine Zeichenfolge, einen komplexen Typ im Zieladressraum des Debuggers handelt.

Diese Version 2 der Schnittstelle unterstützt alle vorherigen Methoden mit identischen Signaturen und enthält zusätzliche neue Methoden, die zusätzliche Funktionen bereitstellen. Die neuen Methoden werden im Header am Ende des Abschnitts für diese Schnittstelle aufgeführt.

Erbschaft

IModelObject2 erbt von IModelObject.

Bemerkungen

Eines der grundlegendsten, aber leistungsstärksten Elemente des Datenmodells besteht darin, dass es die Definition des Objekts standardisiert und wie ein Objekt mit einem Objekt interagiert. Die IModelObject-Schnittstelle kapselt den Begriff eines Objekts - unabhängig davon, ob es sich bei diesem Objekt um eine ganze Zahl, einen Gleitkommawert, eine Zeichenfolge, einen komplexen Typ im Zieladressraum des Debuggers oder um ein Debuggerkonzept wie die Vorstellung eines Prozesses oder eines Moduls handelt.

Es gibt mehrere verschiedene Dinge, die in einem IModelObject (oder in boxed into) gehalten werden können:

• Systeminterne Werte – Ein IModelObject kann ein Container für eine Reihe grundlegender Typen sein: 8, 16, 32 oder 64 Bit signierte oder nicht signierte ganze Zahlen, Booleane, Zeichenfolgen, Fehler oder das Konzept leerer Zahlen.

• Systemeigene Objekte – Ein IModelObject kann einen komplexen Typ (gemäß Definition durch das Typsystem des Debuggers) innerhalb des Adressraums des Debuggers darstellen, auf den der Debugger ausgerichtet ist.

• Synthetische Objekte - Ein IModelObject kann ein dynamisches Objekt sein - ein Wörterbuch, wenn Sie möchten: eine Sammlung von Schlüssel-/Wert-/Metadaten-Tupeln und eine Reihe von Konzepten, die Verhaltensweisen definieren, die nicht einfach durch Schlüssel-Wert-Paare dargestellt werden.

• Eigenschaften - Ein IModelObject kann eine Eigenschaft darstellen: etwas, dessen Wert mit einem Methodenaufruf abgerufen oder geändert werden kann. Eine Eigenschaft innerhalb eines IModelObjects ist effektiv ein IModelPropertyAccessor- Schnittstellenfeld in einem IModelObject

• Methoden - Ein IModelObject kann eine Methode darstellen: etwas, das Sie mit einer Reihe von Argumenten aufrufen und einen Rückgabewert abrufen können. Eine Methode innerhalb eines IModelObject ist effektiv ein IModelMethod- Schnittstellenfeld in einem IModelObject

Ein IModelObject ist kein Isoliertes Objekt. Zusätzlich zur Darstellung eines der oben gezeigten Objekttypen hat jedes Objekt die Vorstellung einer Kette von übergeordneten Datenmodellen. Diese Kette verhält sich ähnlich wie ein | JavaScript-Prototypkette. Anstelle einer linearen Kette von Prototypen wie JavaScript definiert jedes Datenmodellobjekt eine lineare Kette von übergeordneten Modellen. Jedes dieser übergeordneten Modelle wiederum verfügt über eine weitere lineare Kette ihrer eigenen Gruppe von Eltern. Im Wesentlichen ist jedes Objekt eine Aggregation der Funktionen (Eigenschaften usw.) von sich selbst und jedem Objekt in dieser Struktur. Wenn eine bestimmte Eigenschaft abgefragt wird, wird die Abfrage linear an jedes übergeordnete Element übergeben, wenn es abgefragt wird. Dadurch wird ein Verhalten erstellt, bei dem die Suche nach einer Eigenschaft durch eine tiefen erste Suche der Aggregatstruktur aufgelöst wird.

Die Erweiterbarkeit innerhalb dieses Objektmodells ist aufgrund dieser Vorstellung sehr einfach, dass jedes Objekt ein Aggregat von sich selbst und die Struktur der übergeordneten Modelle ist. Eine Erweiterung kann in die Liste der übergeordneten Modelle für ein anderes Objekt aufgenommen und hinzugefügt werden. Dadurch wird das Objekt erweitert. Auf diese Weise können Funktionen zu allen Elementen hinzugefügt werden: einer bestimmten Instanz eines Objekts oder Werts, einem systemeigenen Typ, dem Konzept des Debuggers, was ein Prozess oder Thread ist, oder sogar der Begriff "alle iterierbaren Objekte".

Anforderungen

Anforderung Wert
Header- dbgmodel.h

Siehe auch

übersicht über Debuggerdatenmodell-C++-Schnittstellen