Condividi tramite


Interfaccia IDynamicConceptProviderConcept (dbgmodel.h)

Se un client vuole acquisire l'archiviazione di chiavi e valori per un oggetto, può implementare questa interfaccia di concetto.

L'oggetto è un provider dinamico di chiavi e vuole assumere tutte le query chiave dal modello di dati di base. Questa interfaccia viene in genere usata come bridge a linguaggi dinamici, ad esempio JavaScript.

Ereditarietà

IDynamicConceptProviderConcept eredita da IUnknown.

Metodi

L'interfaccia IDynamicConceptProviderConcept include questi metodi.

 
IDynamicConceptProviderConcept::AddRef

Il metodo IDynamicConceptProviderConcept::AddRef incrementa il conteggio dei riferimenti per un'interfaccia in un oggetto.
IDynamicConceptProviderConcept::GetConcept

Il metodo GetConcept in un provider di concetti dinamici è effettivamente un override del metodo GetConcept in IModelObject.
IDynamicConceptProviderConcept::NotifyDestruct

Il metodo NotifyDestruct in un provider di concetti dinamici è un callback effettuato dal modello di dati di base all'inizio della distruzione dell'oggetto che è un provider di concetti dinamici.
IDynamicConceptProviderConcept::NotifyParent

La chiamata NotifyParent viene usata dal modello di dati principale per informare il provider dinamico del modello padre singolo creato per consentire il bridging del paradigma "più modelli padre".
IDynamicConceptProviderConcept::NotifyParentChange

Il metodo NotifyParent in un provider di concetti dinamici è un callback eseguito dal modello di dati principale quando viene eseguita una manipolazione statica del modello padre singolo dell'oggetto.
IDynamicConceptProviderConcept::QueryInterface

Il metodo IDynamicConceptProviderConcept::QueryInterface recupera i puntatori alle interfacce supportate in un oggetto.
IDynamicConceptProviderConcept::Release

Il metodo IDynamicConceptProviderConcept::Release decrementa il conteggio dei riferimenti per un'interfaccia in un oggetto.
IDynamicConceptProviderConcept::SetConcept

Il metodo SetConcept in un provider di concetti dinamici è effettivamente un override del metodo SetConcept in IModelObject.

Commenti

Concetti relativi al provider dinamico

Mentre il modello di dati stesso gestisce normalmente la gestione delle chiavi e dei concetti per gli oggetti, ci sono momenti in cui tale nozione è minore dell'ideale. In particolare, quando un client vuole creare un ponte tra il modello di dati e un altro elemento che è veramente dinamico (ad esempio JavaScript), può essere utile assumere la chiave e la gestione dei concetti dall'implementazione nel modello di dati. Poiché il modello di dati di base è l'unica implementazione di IModelObject, questa operazione viene invece eseguita tramite una combinazione di due concetti: il concetto di provider di chiavi dinamiche e il concetto di provider di concetti dinamici. Sebbene sia tipico implementare entrambi o nessuno dei due, non vi è alcun requisito per tale.

Se entrambi vengono implementati, il concetto di provider di chiavi dinamiche deve essere aggiunto prima del concetto di provider di concetti dinamici. Entrambi questi concetti sono speciali. Spostano in modo efficace un interruttore sull'oggetto che lo modifica da "gestito in modo statico" a "gestito dinamicamente". Questi concetti possono essere impostati solo se non sono presenti chiavi/concetti gestiti dal modello di dati nell'oggetto. Dopo aver aggiunto questi concetti a un oggetto, l'azione di questa operazione è irrevocabile. Esiste una differenza semantica aggiuntiva intorno all'estendibilità tra un IModelObject che è un provider di concetti dinamici e uno che non è. Questi concetti sono destinati a consentire ai client di creare ponti tra il modello di dati e i sistemi di linguaggio dinamici, ad esempio JavaScript. Il modello di dati ha un concetto di estendibilità che differisce in qualche modo dai sistemi come JavaScript in cui esiste un albero di modelli padre anziché una catena lineare come la catena di prototipi JavaScript. Per consentire una relazione migliore a tali sistemi, un IModelObject che è un provider di concetti dinamici ha un singolo elemento padre del modello di dati. Tale singolo modello di dati padre è un normale IModelObject che può avere un numero arbitrario di modelli padre, come in genere per il modello di dati. Tutte le richieste al provider di concetti dinamici per aggiungere o rimuovere i genitori vengono reindirizzate automaticamente al singolo padre. Dal punto di vista di un esterno, sembra che il provider di concetti dinamici abbia una normale catena di stile albero dei modelli padre. L'implementazione del concetto di concetto dinamico è l'unico oggetto (esterno al modello di dati principale) che è consapevole del singolo padre intermedio. Tale singolo padre può essere collegato al sistema del linguaggio dinamico per fornire un bridge (ad esempio, inserito nella catena di prototipi JavaScript).

Requisiti

Requisito Valore
Intestazione dbgmodel.h

Vedi anche

Panoramica del modello di dati del debugger C++