Interface IDynamicKeyProviderConcept (dbgmodel.h)

Si un client souhaite prendre en charge le stockage des clés et des valeurs d’un objet, il peut implémenter cette interface de concept.

L’objet est un fournisseur dynamique de clés et souhaite prendre en charge toutes les requêtes clés du modèle de données de base. Cette interface est généralement utilisée comme pont vers des langages dynamiques tels que JavaScript.

Héritage

IDynamicKeyProviderConcept interits de IUnknown.

Méthodes

L’interface IDynamicKeyProviderConcept a ces méthodes.

 
IDynamicKeyProviderConcept::AddRef

La méthode IDynamicKeyProviderConcept::AddRef incrémente le nombre de références d’une interface sur un objet.
IDynamicKeyProviderConcept::EnumerateKeys

La méthode EnumerateKeys sur un fournisseur de clés dynamiques est effectivement un remplacement de la méthode EnumerateKeys sur IModelObject.
IDynamicKeyProviderConcept::GetKey

La méthode GetKey sur un fournisseur de clés dynamiques est en grande partie un remplacement de la méthode GetKey sur IModelObject.
IDynamicKeyProviderConcept::QueryInterface

La méthode IDynamicKeyProviderConcept::QueryInterface récupère les pointeurs vers les interfaces prises en charge sur un objet.
IDynamicKeyProviderConcept::Release

La méthode IDynamicKeyProviderConcept::Release décrémente le nombre de références d’une interface sur un objet.
IDynamicKeyProviderConcept::SetKey

La méthode SetKey sur un fournisseur de clés dynamiques est effectivement un remplacement de la méthode SetKey sur IModelObject.

Remarques

Concepts du fournisseur dynamique

Bien que le modèle de données lui-même gère normalement la gestion des clés et des concepts pour les objets, il y a des moments où cette notion est inférieure à idéale. En particulier, lorsqu’un client souhaite créer un pont entre le modèle de données et quelque chose d’autre qui est vraiment dynamique (par exemple: JavaScript), il peut être utile de prendre en charge la gestion des clés et des concepts à partir de l’implémentation dans le modèle de données. Étant donné que le modèle de données de base est l’une et seule implémentation d’IModelObject, il s’agit plutôt d’une combinaison de deux concepts : le concept de fournisseur de clés dynamiques et le concept de fournisseur de concept dynamique. Bien qu’il soit courant d’implémenter à la fois ou non, il n’y a pas besoin de ce type.

Si les deux sont implémentés, le concept de fournisseur de clés dynamiques doit être ajouté avant le concept de fournisseur de concept dynamique. Ces deux concepts sont spéciaux. Ils retournent efficacement un commutateur sur l’objet qui le transforme de « statiquement géré » à « géré dynamiquement ». Ces concepts ne peuvent être définis que s’il n’y a pas de clés/concepts gérés par le modèle de données sur l’objet. Une fois ces concepts ajoutés à un objet, l’action de cette opération est irréversible. Il existe une différence sémantique supplémentaire autour de l’extensibilité entre un IModelObject qui est un fournisseur de concept dynamique et un autre qui n’est pas. Ces concepts sont destinés à permettre aux clients de créer des ponts entre le modèle de données et les systèmes de langage dynamiques tels que JavaScript. Le modèle de données a un concept d’extensibilité qui diffère quelque peu fondamentalement des systèmes comme JavaScript dans montrant qu’il existe une arborescence de modèles parents plutôt qu’une chaîne linéaire comme la chaîne de prototype JavaScript. Pour permettre une meilleure relation à ces systèmes, un IModelObject qui est un fournisseur de concept dynamique a un seul parent de modèle de données. Ce parent de modèle de données unique est un IModelObject normal qui peut avoir un nombre arbitraire de modèles parents, comme c’est le cas pour le modèle de données. Toutes les demandes adressées au fournisseur de concept dynamique pour ajouter ou supprimer des parents sont automatiquement redirigées vers le parent unique. Du point de vue d’un extérieur, il semble que le fournisseur de concept dynamique dispose d’une chaîne normale de style d’arborescence des modèles parents. L’implémenteur du concept de fournisseur de concept dynamique est le seul objet (en dehors du modèle de données principal) qui est conscient du parent unique intermédiaire. Ce parent unique peut être lié au système de langage dynamique pour fournir un pont (par exemple: placé dans la chaîne de prototype JavaScript).

Configuration requise

   
En-tête dbgmodel.h

Voir aussi

Vue d’ensemble du modèle de données C++ du débogueur