Freigeben über


IDataModelManager2::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 Visualisierung übernimmt dieses Datenmodell die Anzeige des Typs. Anzeige-Engines blenden standardmäßig native/sprachbasierte Konstrukte des Objekts zugunsten der Ansicht des vom Datenmodell dargestellten Objekts aus.

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 der Signatur entspricht (für das es keine bessere übereinstimmende Typsignatur gibt), 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 auf Erfolg oder Fehler hinweist.

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.
            }
        }
    }
}

IDataModelManager2-Schnittstelle

Anforderungen

Anforderung Wert
Header dbgmodel.h