Partager via


IDataModelManager3 ::GetModelForType, méthode (dbgmodel.h)

La méthode GetModelForType retourne le modèle de données qui est le visualiseur canonique pour une instance de type donnée. En effet, cette méthode recherche la meilleure signature de type correspondante qui a été inscrite avec un appel antérieur à la méthode RegisterModelForTypeSignature et retourne le modèle de données associé.

Syntaxe

HRESULT GetModelForType(
  IDebugHostType             *type,
  IModelObject               **dataModel,
  IDebugHostTypeSignature    **typeSignature,
  IDebugHostSymbolEnumerator **wildcardMatches
);

Paramètres

type

Instance de type concrète pour laquelle trouver le visualiseur canonique correspondant le mieux inscrit via un appel antérieur à la méthode RegisterModelForTypeSignature.

dataModel

Le modèle de données qui est le visualiseur canonique de l’instance de type donnée, tel que déterminé par la meilleure signature de type correspondante inscrite via un appel antérieur à RegisterModelForTypeSignature, est retourné ici. Ce modèle de données est automatiquement attaché à n’importe quel objet natif/langage créé avec le type spécifié par l’argument de type.

typeSignature

La signature de type dont la correspondance avec le type nous a provoqué le retour du modèle de données inscrit à partir d’un appel précédent à RegisterModelForTypeSignature avec la signature de type retournée.

wildcardMatches

S’il existe des caractères génériques dans la signature retournée dans l’argument typeSignature, un énumérateur de toutes les correspondances entre les caractères génériques et l’instance de type concret donnée dans l’argument de type est retourné ici.

Valeur de retour

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

Remarques

exemple de code

ComPtr<IDataModelManager3> spManager; /* get the data model manager */
ComPtr<IDebugHostModule> spModule;   /* get a module */

// Find the type of "MyType<int>" within the module
ComPtr<IDebugHostType> spType;
if (SUCCEEDED(spModule->FindTypeByName(L"MyType<int>", &spType)))
{
    // Find the canonical visualizer which would be applied to MyType<int>
    ComPtr<IModelObject> spDataModel;
    ComPtr<IDebugHostTypeSignature> spSignature;
    ComPtr<IDebugHostSymbolEnumerator> spWildcardMatches;

    if (SUCCEEDED(spManager->GetModelForType(spType.Get(), 
                                             &spDataModel, 
                                             &spSignature, 
                                             &spWildcardMatches)))
    {
        // There is a visualizer which matched.
        // spDataModel is the data model object which was registered as 
        //     the canonical visualizer (RegisterModelForTypeSignature)
        // spSignature is the signature which that data model was registered 
        //     against (e.g.: created for MyType<*> via
        //     CreateTypeSignature/RegisterModelForTypeSignature)
        // spWildcardMatches is an enumerator of the wildcard matches between 
        //     the specific type spType and the signature spSignature (here 
        //     int matched *, so there will be one item -- the type 'int' in
        //     the enumerator)
    }

Exigences

Exigence Valeur
d’en-tête dbgmodel.h

Voir aussi

interface IDataModelManager3