Partager via


Méthode IDataModelManager ::RegisterExtensionForTypeSignature (dbgmodel.h)

La méthode RegisterExtensionForTypeSignature est similaire à la méthode RegisterModelForTypeSignature avec une différence clé. Le modèle de données passé à cette méthode n’est pas le visualiseur canonique pour n’importe quel type et il ne prend pas en charge l’affichage de la vue native/langue de ce type. Le modèle de données transmis à cette méthode est automatiquement ajouté en tant que parent à tout type concret qui correspond à la signature de type fournie.

Contrairement à la méthode RegisterModelForTypeSignature, il n’existe aucune limite pour les signatures de type identiques ou ambiguës inscrites en tant qu’extensions d’un type donné (ou d’un ensemble de types). Chaque extension dont la signature de type correspond à un type concret donné instance entraîne l’attachement automatique du modèle de données inscrit via cette méthode aux objets nouvellement créés en tant que modèles parent. Cela, en effet, permet à un nombre arbitraire de clients d’étendre un type (ou un ensemble de types) avec de nouveaux champs ou fonctionnalités.

Syntaxe

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

Paramètres

typeSignature

Signature de type par rapport à laquelle le modèle de données fourni sera inscrit en tant qu’extension. Chaque objet natif/langage dont le type concret correspond à cette signature aura automatiquement le modèle de données donné attaché en tant que modèle parent.

dataModel

Modèle de données qui sera automatiquement ajouté en tant que modèle parent à chaque objet natif/langage avec un type concret qui correspond à la signature de type fournie.

Valeur retournée

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Remarques

Exemple de Code

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->RegisterExtensionForTypeSignature(
            spTypeSignature.Get(), 
            spDataModel.Get())
            )
        {
            // Every instance matching MyType<*> will now have spDataModel 
            // attached as the parent.  This data model is considered an "extension"
            // (adding properties).  It will not be counted as a visualizer and 
            // will not "take over" the display of the type
        }
    }
}

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h

Voir aussi

Interface IDataModelManager