Interfaz IDynamicKeyProviderConcept (dbgmodel.h)

Si un cliente quiere asumir el almacenamiento de claves y valores de un objeto, puede implementar esta interfaz de concepto.

El objeto es un proveedor dinámico de claves y desea asumir todas las consultas de clave del modelo de datos principal. Esta interfaz se usa normalmente como puente a lenguajes dinámicos, como JavaScript.

Herencia

IDynamicKeyProviderConcept hereda de IUnknown.

Métodos

La interfaz IDynamicKeyProviderConcept tiene estos métodos.

 
IDynamicKeyProviderConcept::AddRef

El método IDynamicKeyProviderConcept::AddRef incrementa el recuento de referencias de una interfaz en un objeto.
IDynamicKeyProviderConcept::EnumerateKeys

El método EnumerateKeys en un proveedor de claves dinámicas es efectivamente una invalidación del método EnumerateKeys en IModelObject.
IDynamicKeyProviderConcept::GetKey

El método GetKey en un proveedor de claves dinámicas es en gran medida una invalidación del método GetKey en IModelObject.
IDynamicKeyProviderConcept::QueryInterface

El método IDynamicKeyProviderConcept::QueryInterface recupera punteros a las interfaces admitidas en un objeto .
IDynamicKeyProviderConcept::Release

El método IDynamicKeyProviderConcept::Release disminuye el recuento de referencias de una interfaz en un objeto.
IDynamicKeyProviderConcept::SetKey

El método SetKey en un proveedor de claves dinámicas es efectivamente una invalidación del método SetKey en IModelObject.

Comentarios

Conceptos del proveedor dinámico

Aunque el propio modelo de datos normalmente controla la administración de conceptos y claves para los objetos, hay ocasiones en las que esa noción es menor que la ideal. En concreto, cuando un cliente desea crear un puente entre el modelo de datos y otra cosa que sea verdaderamente dinámica (por ejemplo, JavaScript), puede ser útil asumir la administración de claves y conceptos de la implementación en el modelo de datos. Como el modelo de datos principal es la única implementación de IModelObject, esto se hace a través de una combinación de dos conceptos: el concepto de proveedor de claves dinámicos y el concepto de proveedor de concepto dinámico. Aunque sería habitual implementar ambos o ninguno de ellos, no hay ningún requisito para ello.

Si se implementan ambos, se debe agregar el concepto de proveedor de claves dinámicas antes del concepto de proveedor de concepto dinámico. Ambos conceptos son especiales. Invierten eficazmente un modificador en el objeto que lo cambia de "administrado estáticamente" a "administrado dinámicamente". Estos conceptos solo se pueden establecer si no hay claves o conceptos administrados por el modelo de datos en el objeto. Una vez agregados estos conceptos a un objeto, la acción de hacerlo es irremediable. Hay una diferencia semántica adicional en torno a la extensibilidad entre un IModelObject , que es un proveedor de concepto dinámico y otro que no lo es. Estos conceptos están diseñados para permitir a los clientes crear puentes entre el modelo de datos y los sistemas de lenguaje dinámico, como JavaScript. El modelo de datos tiene un concepto de extensibilidad que difiere algo fundamentalmente de sistemas como JavaScript en que hay un árbol de modelos primarios en lugar de una cadena lineal como la cadena de prototipos de JavaScript. Para permitir una mejor relación con estos sistemas, un IModelObject que es un proveedor de concepto dinámico tiene un único modelo de datos primario. Ese modelo de datos único primario es un IModelObject normal que puede tener un número arbitrario de modelos primarios, como es habitual para el modelo de datos. Las solicitudes al proveedor de concepto dinámico para agregar o quitar elementos primarios se redirigen automáticamente al elemento primario único. Desde la perspectiva de un exterior, parece que el proveedor de conceptos dinámicos tiene una cadena de estilo de árbol normal de los modelos primarios. El implementador del concepto de proveedor de concepto dinámico es el único objeto (fuera del modelo de datos principal) que es consciente del elemento primario único intermedio. Ese elemento primario único se puede vincular con el sistema de lenguaje dinámico para proporcionar un puente (por ejemplo, colocado en la cadena de prototipos de JavaScript).

Requisitos

Requisito Valor
Header dbgmodel.h

Consulte también

Información general sobre el modelo de datos del depurador de C++