IModelObject-Schnittstelle (dbgmodel.h)
Eines der grundlegendsten, aber leistungsfähigsten Elemente des Datenmodells ist, dass es die Definition des Objekts und der Interaktion mit einem Objekt standardisiert. 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 ein Debuggerkonzept wie den Begriff eines Prozesses oder eines Moduls handelt.
Es gibt verschiedene Dinge, die in einem IModelObject gehalten (oder in boxed) werden können:
• Intrinsische Werte: Ein IModelObject kann ein Container für eine Reihe grundlegender Typen sein: 8, 16, 32 oder 64-Bit-Ganzzahlen mit Vorzeichen oder ohne Vorzeichen, Booleen, Zeichenfolgen, Fehler oder der Begriff leer.
Native Objekte: Ein IModelObject kann einen komplexen Typ (wie vom Typsystem des Debuggers definiert) innerhalb des Adressraums des Debuggers darstellen.
• Synthetische Objekte: Ein IModelObject kann ein dynamisches Objekt sein– ein Wörterbuch, wenn Sie so möchten: eine Auflistung von Schlüssel-Wert-/Metadatentupeln 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 in einem IModelObject ist effektiv eine IModelPropertyAccessor-Schnittstelle , die in einem IModelObject enthalten ist.
• 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 in einem IModelObject ist effektiv eine IModelMethod-Schnittstelle , die in einem IModelObject-Objekt eingeschlossen ist.
Ein IModelObject ist kein Isoliertes Objekt. Zusätzlich zur Darstellung eines der oben gezeigten Objekttypen hat jedes Objekt den Begriff einer Kette übergeordneter Datenmodelle. Diese Kette verhält sich ähnlich wie eine | JavaScript-Prototypkette. Anstelle einer linearen Kette von Prototypen wie JavaScript definiert jedes Datenmodellobjekt eine lineare Kette übergeordneter Modelle. Jedes dieser übergeordneten Modelle verfügt wiederum über eine weitere lineare Kette eigener 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 und das Objekt, für das sie abgefragt wird, diese Eigenschaft nicht unterstützt, wird die Abfrage in linearer Reihenfolge an die einzelnen übergeordneten Objekte übergeben. Dadurch wird ein Verhalten erstellt, bei dem die Suche nach einer Eigenschaft durch eine gründliche Suche der Aggregatstruktur aufgelöst wird.
Die Erweiterbarkeit innerhalb dieses Objektmodells ist sehr einfach, wenn man bedenkt, dass jedes Objekt ein Aggregat von sich selbst und der Struktur übergeordneter Modelle ist. Eine Erweiterung kann sich selbst in die Liste der übergeordneten Modelle für ein anderes Objekt einfügen. Dadurch wird das Objekt erweitert. Auf diese Weise ist es möglich, Funktionen zu allem hinzuzufügen: einem bestimmten instance eines Objekts oder Werts, einem nativen Typ, dem Konzept des Debuggers, was ein Prozess oder Thread ist, oder sogar die Vorstellung von "allen iterierbaren Objekten".
Vererbung
IModelObject erbt von IUnknown.
Methoden
Die IModelObject-Schnittstelle verfügt über diese Methoden.
IModelObject::AddParentModel Die AddParentModel-Methode fügt dem angegebenen Objekt ein neues übergeordnetes Modell hinzu. |
IModelObject::AddRef Die AddRef-Methode erhöht die Verweisanzahl für eine Schnittstelle für ein Objekt. Diese Methode gehört zur IModelObject-Schnittstelle. |
IModelObject::ClearConcepts Die ClearConcepts-Methode entfernt alle Konzepte aus der instance des -Objekts, das darin angegeben wird. |
IModelObject::ClearKeys Die ClearKeys-Methode entfernt alle Schlüssel und die zugehörigen Werte und Metadaten aus der instance des dadurch angegebenen Objekts. |
IModelObject::Compare Die Compare-Methode vergleicht zwei Modellobjekte und gibt einen Hinweis auf die Beziehung dieser Objekte zurück. |
IModelObject::D ereference Die Dereference-Methode leitet ein Objekt ab. |
IModelObject::EnumerateKeyReferences Die EnumerateKeyReferences-Methode verhält sich ähnlich wie die EnumerateKeyValues-Methode, mit der Ausnahme, dass sie Verweise auf die Schlüssel zurückgibt, die sie anstelle des Werts des Schlüssels aufzählt. |
IModelObject::EnumerateKeys Listet die Schlüssel innerhalb des Anbieters für dynamische Schlüssel auf. |
IModelObject::EnumerateKeyValues Die EnumerateKeyValues-Methode ist die erste Methode, an die sich ein Client wendet, um alle Schlüssel für ein Objekt aufzulisten. |
IModelObject::EnumerateRawReferences Die EnumerateRawReferences-Methode listet Verweise auf alle nativen untergeordneten Elemente (Felder, Basisklassen usw.) des angegebenen Objekts auf. |
IModelObject::EnumerateRawValues Die EnumerateRawValues-Methode listet alle nativen untergeordneten Elemente (Felder, Basisklassen usw.) des angegebenen Objekts auf. |
IModelObject::GetConcept Die GetConcept-Methode sucht nach einem Konzept für das Objekt (oder dessen übergeordnete Modellkette) und gibt einen Schnittstellenzeiger auf die Konzeptschnittstelle zurück. |
IModelObject::GetContext Die GetContext-Methode gibt den Hostkontext zurück, der dem -Objekt zugeordnet ist. |
IModelObject::GetContextForDataModel Die GetContextForDataModel-Methode wird verwendet, um Kontextinformationen abzurufen, die mit einem vorherigen Aufruf von SetContextForDataModel eingerichtet wurden. |
IModelObject::GetIntrinsicValue Die GetIntrinsicValue-Methode gibt das Ding zurück, das in einem IModelObject-Objekt enthalten ist. |
IModelObject::GetIntrinsicValueAs Die GetIntrinsicValueAs-Methode verhält sich ähnlich wie die GetIntrinsicValue-Methode, mit der Ausnahme, dass sie den Wert in den angegebenen Variantentyp konvertiert. |
IModelObject::GetKey Die GetKey-Methode ruft den Wert (und die metadaten zugeordneten) eines bestimmten Schlüssels nach Name ab. |
IModelObject::GetKeyReference Wenn das Objekt oder eines seiner übergeordneten Modelle über einen Schlüssel verfügt, der gemäß dem Argument "key" benannt ist, gibt dies einen Verweis auf diesen Schlüssel zurück. |
IModelObject::GetKeyValue Die GetKeyValue-Methode ist die erste Methode, an die sich ein Client wendet, um den Wert eines bestimmten Schlüssels (und die metadaten, die einem bestimmten Schlüssel nach Name zugeordnet sind) abzurufen. |
IModelObject::GetKind Die GetKind-Methode gibt zurück, welche Art von Objekt im IModelObject-Objekt enthalten ist. |
IModelObject::GetLocation Die GetLocation-Methode gibt den Speicherort des nativen Objekts zurück. Ein solcher Speicherort ist zwar in der Regel eine virtuelle Adresse innerhalb des Adressraums des Debugziels, aber nicht unbedingt. |
IModelObject::GetNumberOfParentModels Die GetNumberOfParentModels-Methode gibt die Anzahl der übergeordneten Modelle zurück, die an das angegebene Objekt instance angefügt sind. |
IModelObject::GetParentModel Die GetParentModel-Methode gibt das übergeordnete Modell in der übergeordneten Modellkette des angegebenen Objekts zurück. |
IModelObject::GetRawReference Die GetRawReference-Methode findet ein natives Konstrukt innerhalb des angegebenen Objekts und gibt einen Verweis darauf zurück. |
IModelObject::GetRawValue Die GetRawValue-Methode findet ein natives Konstrukt innerhalb des angegebenen Objekts. Ein solches Konstrukt kann ein Feld, eine Basisklasse, ein Feld in einer Basisklasse, eine Memberfunktion usw. sein. |
IModelObject::GetTargetInfo Die GetTargetInfo-Methode ist effektiv eine Kombination der GetLocation- und GetTypeInfo-Methoden, die sowohl den abstrakten Speicherort als auch den nativen Typ des angegebenen Objekts zurückgeben. |
IModelObject::GetTypeInfo Die GetTypeInfo-Methode gibt den systemeigenen Typ des angegebenen Objekts zurück. Wenn dem Objekt keine systemeigenen Typinformationen zugeordnet sind, ist der Aufruf zwar erfolgreich, gibt aber NULL zurück. |
IModelObject::IsEqualTo Die IsEqualTo-Methode vergleicht einen Hostkontext mit einem anderen Hostkontext. Wenn die beiden Kontexte gleichwertig sind, wird ein Hinweis darauf zurückgegeben. Beachten Sie, dass dieser Vergleich keine Schnittstellenäquivalenz darstellt. |
IModelObject::QueryInterface Die IModelObject::QueryInterface-Methode ruft Zeiger auf die unterstützten Schnittstellen für ein Objekt ab. |
IModelObject::Release Die IModelObject::Release-Methode erhöht die Verweisanzahl für eine Schnittstelle für ein Objekt. |
IModelObject::RemoveParentModel RemoveParentModel entfernt ein angegebenes übergeordnetes Modell aus der übergeordneten Suchkette des angegebenen Objekts. |
IModelObject::SetConcept Die SetConcept-Methode platziert ein angegebenes Konzept auf dem Objekt instance, das durch diesen Zeiger angegeben wird. |
IModelObject::SetContextForDataModel Die SetContextForDataModel-Methode wird von der Implementierung eines Datenmodells verwendet, um Implementierungsdaten auf instance-Objekten zu platzieren. |
IModelObject::SetKey Die SetKey-Methode ist die Methode, die ein Client verwendet, um einen Schlüssel für ein Objekt zu erstellen (und dem erstellten Schlüssel möglicherweise Metadaten zuzuordnen). |
IModelObject::SetKeyValue Die SetKeyValue-Methode ist die erste Methode, an die sich ein Client wendet, um den Wert eines Schlüssels festzulegen. Diese Methode kann nicht verwendet werden, um einen neuen Schlüssel für ein Objekt zu erstellen. |
IModelObject::TryCastToRuntimeType Die TryCastToRuntimeType-Methode fordert den Debughost auf, eine Analyse durchzuführen und den tatsächlichen Laufzeittyp (die am meisten abgeleitete Klasse) des angegebenen Objekts zu bestimmen. |
Anforderungen
Anforderung | Wert |
---|---|
Header | dbgmodel.h |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für