Interfaccia IDynamicKeyProviderConcept (dbgmodel.h)

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

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

Ereditarietà

IDynamicKeyProviderConcept eredita da IUnknown.

Metodi

L'interfaccia IDynamicKeyProviderConcept dispone di questi metodi.

 
IDynamicKeyProviderConcept::AddRef

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

Il metodo EnumerateKeys in un provider di chiavi dinamiche è in effetti un override del metodo EnumerateKeys in IModelObject.
IDynamicKeyProviderConcept::GetKey

Il metodo GetKey in un provider di chiavi dinamiche è in gran parte un override del metodo GetKey in IModelObject.
IDynamicKeyProviderConcept::QueryInterface

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

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

Il metodo SetKey in un provider di chiavi dinamiche è in effetti un override del metodo SetKey in IModelObject.

Commenti

Concetti relativi ai provider dinamici

Anche se il modello di dati stesso gestisce normalmente la gestione delle chiavi e dei concetti per gli oggetti, esistono momenti in cui tale nozione è minore dell'ideale. In particolare, quando un client vuole creare un ponte tra il modello di dati e qualcos'altro che è veramente dinamico (ad esempio, JavaScript), può essere utile assumere il controllo della gestione chiave e del concetto 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 chiave dinamica e il concetto di provider di concetti dinamici. Anche se sarebbe tipico implementare entrambi o nessuno dei due, non esiste alcun requisito per tali.

Se vengono implementati entrambi, il concetto di provider di chiavi dinamiche deve essere aggiunto prima del concetto di provider di concetti dinamici. Entrambi questi concetti sono speciali. Capovolgono in modo efficace un interruttore sull'oggetto modificandolo da "gestito in modo statico" a "gestito in modo dinamico". 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 per l'estendibilità tra un IModelObject che è un provider di concetti dinamici e uno che non lo è. Questi concetti sono progettati per consentire ai client di creare bridge tra il modello di dati e i sistemi del linguaggio dinamico, ad esempio JavaScript. Il modello di dati ha un concetto di estendibilità leggermente diverso da sistemi come JavaScript in quanto esiste un albero di modelli padre anziché una catena lineare come la catena di prototipi JavaScript. Per consentire una migliore relazione con 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 IModelObject normale che può avere un numero arbitrario di modelli padre, come è tipico per il modello di dati. Tutte le richieste al provider di concetti dinamici per aggiungere o rimuovere elementi padre vengono reindirizzate automaticamente al singolo elemento padre. Dal punto di vista di un esterno, sembra che il provider di concetti dinamici abbia una normale catena di stili di albero dei modelli padre. L'implementatore del concetto di provider di concetti dinamici è l'unico oggetto (al di fuori del modello di dati di base) che riconosce il singolo elemento padre intermedio. Tale singolo elemento 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++