IDataModelManager::GetModelForTypeSignature-Methode (dbgmodel.h)

Die GetModelForTypeSignature-Methode gibt das Datenmodell zurück, das für eine bestimmte Typsignatur über einen vorherigen Aufruf der RegisterModelForTypeSignature-Methode registriert wurde. Das von dieser Methode zurückgegebene Datenmodell gilt als kanonische Schnellansicht für jeden Typ, der der übergebenen Typsignatur entspricht. Als kanonische Schnellansicht übernimmt dieses Datenmodell die Anzeige des Typs. Anzeige-Engines blenden standardmäßig native/sprachbasierte Konstrukte des Objekts zugunsten der Ansicht des Objekts aus, das vom Datenmodell dargestellt wird.

Syntax

HRESULT GetModelForTypeSignature(
  IDebugHostTypeSignature *typeSignature,
  IModelObject            **dataModel
);

Parameter

typeSignature

Eine Typsignatur, für die dataModel als kanonische Schnellansicht registriert wird. Jedes Objekt, das mit einem nativen/Sprachtyp erstellt wurde, der mit der Signatur übereinstimmt (und für das keine besser übereinstimmende Typsignatur vorhanden ist), wird automatisch das zurückgegebene Datenmodell als übergeordnetes Element angefügt.

dataModel

Das Datenmodell, das als kanonische Schnellansicht für alle Typinstanzen registriert ist, die der angegebenen Typsignatur entsprechen (und für die es keine besser übereinstimmende Typsignatur gibt).

Rückgabewert

Diese Methode gibt HRESULT zurück, das den Erfolg oder Fehler angibt.

Hinweise

Beispielcode

ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHost> spHost;           /* get the debug host */

ComPtr<IModelObject> spDataModel;    /* create a data model (see 
                                        CreateDataModelObject) */

ComPtr<IDebugHostSymbols> spSym;
if (SUCCEEDED(spHost.As(&spSym)))
{
    // Create a signature to match MyType<*>
    ComPtr<IDebugHostTypeSignature> spTypeSignature;
    if (SUCCEEDED(spSym->CreateTypeSignature(L"MyType<*>", nullptr, &spTypeSignature)))
    {
        // Register the model for std::vector<*>
        if (SUCCEEDED(spManager->RegisterModelForTypeSignature(spTypeSignature.Get(),
                                                               spDataModel.Get()))
        {
            // Every instance matching MyType<*> will now have spDataModel 
            // attached as the parent.  Further, such parent is considered 
            // the canonical visualizer for all types matching MyType<*> since it 
            // was registered via RegisterModelForTypeSignature instead of
            // RegisterExtensionForTypeSignature.
            //
            // Demonstrate that we can find the canonical visualizer under 
            // this registration.
            ComPtr<IModelObject> spCanonicalVisualizerModel;
            if (SUCCEEDED(spManager->GetModelForTypeSignature(
                spTypeSignature.Get(), 
                &spCanonicalVisualizerModel)))
            {
                // spCanonicalVisualizerModel is the same as spDataModel since 
                // it was registered as such.
            }
        }
    }
}

Anforderungen

Anforderung Wert
Header dbgmodel.h

Weitere Informationen

IDataModelManager-Schnittstelle