Partager via


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

La méthode RegisterExtensionForTypeSignature est similaire à la méthode RegisterModelForTypeSignature avec une différence clé. Le modèle de données qui est 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/linguistique de ce type. Le modèle de données passé à 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 (ou d’un ensemble de types donné). 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 parents. Cela permet en effet à 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
        }
    }
}

Interface IDataModelManager2

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h