Condividi tramite


Metodo IDataModelManager2::GetModelForTypeSignature (dbgmodel.h)

Il metodo GetModelForTypeSignature restituisce il modello di dati registrato in base a una determinata firma di tipo tramite una chiamata precedente al metodo RegisterModelForTypeSignature. Il modello di dati restituito da questo metodo è considerato il visualizzatore canonico per qualsiasi tipo che corrisponde alla firma del tipo passato. Come visualizzatore canonico, tale modello di dati assume la visualizzazione del tipo. Per impostazione predefinita, i motori di visualizzazione nasconderanno costrutti nativi/linguistici dell'oggetto a favore della visualizzazione dell'oggetto presentato dal modello di dati.

Sintassi

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

Parametri

typeSignature

Firma di tipo per cui dataModel verrà registrato come visualizzatore canonico. Qualsiasi oggetto creato con un tipo nativo/linguistico corrispondente alla firma (e per il quale non esiste una firma di tipo corrispondente migliore) avrà automaticamente il modello di dati restituito collegato come padre.

dataModel

Modello di dati registrato come visualizzatore canonico per tutte le istanze di tipo che corrispondono alla firma del tipo specificato e per cui non esiste una firma di tipo corrispondente migliore.

Valore restituito

Questo metodo restituisce HRESULT che indica l'esito positivo o l'errore.

Commenti

Codice di esempio

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

Interfaccia IDataModelManager2

Requisiti

Requisito Valore
Intestazione dbgmodel.h