Interface IDynamicKeyProviderConcept (dbgmodel.h)

Se um cliente quiser assumir o armazenamento de chaves e valores de um objeto, ele poderá implementar essa interface de conceito.

O objeto é um provedor dinâmico de chaves e deseja assumir todas as principais consultas do modelo de dados principal. Normalmente, essa interface é usada como uma ponte para linguagens dinâmicas, como JavaScript.

Herança

IDynamicKeyProviderConcept herda de IUnknown.

Métodos

A interface IDynamicKeyProviderConcept tem esses métodos.

 
IDynamicKeyProviderConcept::AddRef

O método IDynamicKeyProviderConcept::AddRef incrementa a contagem de referência para uma interface em um objeto .
IDynamicKeyProviderConcept::EnumerateKeys

O método EnumerateKeys em um provedor de chave dinâmica é efetivamente uma substituição do método EnumerateKeys em IModelObject.
IDynamicKeyProviderConcept::GetKey

O método GetKey em um provedor de chave dinâmica é em grande parte uma substituição do método GetKey em IModelObject.
IDynamicKeyProviderConcept::QueryInterface

O método IDynamicKeyProviderConcept::QueryInterface recupera ponteiros para as interfaces com suporte em um objeto .
IDynamicKeyProviderConcept::Release

O método IDynamicKeyProviderConcept::Release diminui a contagem de referência de uma interface em um objeto .
IDynamicKeyProviderConcept::SetKey

O método SetKey em um provedor de chave dinâmica é efetivamente uma substituição do método SetKey em IModelObject.

Comentários

Conceitos de provedor dinâmico

Embora o próprio modelo de dados normalmente manipule o gerenciamento de chave e conceito para objetos, há momentos em que essa noção é menor que o ideal. Em particular, quando um cliente deseja criar uma ponte entre o modelo de dados e outra coisa que seja verdadeiramente dinâmica (por exemplo, JavaScript), pode ser valioso assumir o gerenciamento de conceito e chave da implementação no modelo de dados. Como o modelo de dados principal é a única implementação de IModelObject, isso é feito por meio de uma combinação de dois conceitos: o conceito de provedor de chave dinâmica e o conceito de provedor de conceito dinâmico. Embora seja comum implementar ambos ou nenhum dos dois, não há nenhum requisito para isso.

Se ambos forem implementados, o conceito de provedor de chave dinâmica deverá ser adicionado antes do conceito de provedor de conceito dinâmico. Ambos os conceitos são especiais. Eles efetivamente inverter um comutador no objeto alterando-o de "gerenciado estaticamente" para "gerenciado dinamicamente". Esses conceitos só poderão ser definidos se não houver chaves/conceitos gerenciados pelo modelo de dados no objeto . Depois que esses conceitos são adicionados a um objeto, a ação de fazer isso é irrevogável. Há uma diferença semântica adicional em relação à extensibilidade entre um IModelObject , que é um provedor de conceito dinâmico e um que não é. Esses conceitos destinam-se a permitir que os clientes criem pontes entre o modelo de dados e sistemas de linguagem dinâmica, como JavaScript. O modelo de dados tem um conceito de extensibilidade que difere um pouco fundamentalmente de sistemas como JavaScript em que há uma árvore de modelos pai em vez de uma cadeia linear como a cadeia de protótipos JavaScript. Para permitir uma melhor relação com esses sistemas, um IModelObject que é um provedor de conceito dinâmico tem um único modelo de dados pai. Esse pai de modelo de dados único é um IModelObject normal que pode ter um número arbitrário de modelos pai, como é típico para o modelo de dados. Todas as solicitações ao provedor de conceito dinâmico para adicionar ou remover pais são redirecionadas automaticamente para o pai único. Da perspectiva de um forasteiro, parece que o provedor de conceito dinâmico tem uma cadeia de estilo de árvore normal de modelos pai. O implementador do conceito de provedor de conceito dinâmico é o único objeto (fora do modelo de dados principal) que está ciente do pai único intermediário. Esse único pai pode ser vinculado ao sistema de linguagem dinâmica para fornecer uma ponte (por exemplo: colocada na cadeia de protótipos do JavaScript).

Requisitos

Requisito Valor
Cabeçalho dbgmodel.h

Confira também

Visão geral do modelo de dados do depurador C++