Поделиться через


Интерфейс IDynamicKeyProviderConcept (dbgmodel.h)

Если клиент хочет взять на себя хранилище ключей и значений для объекта, он может реализовать этот интерфейс концепции.

Объект является динамическим поставщиком ключей и хочет взять на себя все ключевые запросы из основной модели данных. Этот интерфейс обычно используется в качестве моста к динамическим языкам, таким как JavaScript.

Наследство

IDynamicKeyProviderConcept наследует от IUnknown.

Методика

Интерфейс IDynamicKeyProviderConcept имеет эти методы.

 
IDynamicKeyProviderConcept::AddRef

Метод IDynamicKeyProviderConcept::AddRef увеличивает число ссылок для интерфейса объекта.
IDynamicKeyProviderConcept::EnumerateKeys

Метод EnumerateKeys в динамическом поставщике ключей фактически переопределяет метод EnumerateKeys в IModelObject.
IDynamicKeyProviderConcept::GetKey

Метод GetKey в динамическом поставщике ключей является в значительной степени переопределением метода GetKey в IModelObject.
IDynamicKeyProviderConcept::QueryInterface

Метод IDynamicKeyProviderConcept::QueryInterface извлекает указатели на поддерживаемые интерфейсы объекта.
IDynamicKeyProviderConcept::Release

Метод IDynamicKeyProviderConcept::Release уменьшает количество ссылок для интерфейса в объекте.
IDynamicKeyProviderConcept::SetKey

Метод SetKey для поставщика динамических ключей фактически переопределяет метод SetKey в IModelObject.

Замечания

концепции динамического поставщика

Хотя сама модель данных обычно обрабатывает управление ключами и концепциями для объектов, существует время, когда это понятие меньше идеала. В частности, когда клиент хочет создать мост между моделью данных и что-то другое, которое действительно динамически (например, JavaScript), может быть полезно взять на себя управление ключами и концепциями из реализации в модели данных. Поскольку базовая модель данных является одной и единственной реализацией IModelObject, это делается с помощью сочетания двух понятий: концепции поставщика динамических ключей и концепции динамического поставщика концепций. Хотя это было бы типично для реализации обоих или ни другого, нет никаких требований для такого.

Если оба варианта реализованы, необходимо добавить концепцию поставщика динамических ключей перед концепцией динамического поставщика концепций. Оба этих понятия являются особыми. Они эффективно переворачивают переключатель для объекта, изменяя его с "статически управляемым" на "динамически управляемый". Эти понятия можно задать только в том случае, если в объекте нет ключей и концепций, управляемых моделью данных. После добавления этих понятий в объект действие этого неизменяемо. Существует дополнительная семантическая разница в расширяемости между IModelObject, которая является динамическим поставщиком концепций и не является. Эти понятия предназначены для того, чтобы клиенты могли создавать мосты между моделью данных и динамическими языковыми системами, такими как JavaScript. Модель данных имеет концепцию расширяемости, которая несколько отличается от систем, таких как JavaScript, в том, что существует дерево родительских моделей, а не линейная цепочка, как цепочка прототипов JavaScript. Чтобы обеспечить лучшую связь с такими системами, IModelObject который является динамическим поставщиком концепции, имеет один родительский элемент модели данных. Этот родительский элемент модели данных является обычным IModelObject который может иметь произвольное количество родительских моделей, как обычно для модели данных. Все запросы к поставщику динамической концепции для добавления или удаления родителей автоматически перенаправляются в один родительский элемент. С точки зрения аутсайдера, он выглядит так, как будто динамический поставщик концепций имеет обычную цепочку стилей дерева родительских моделей. Реализация концепции динамического поставщика концепции является единственным объектом (за пределами основной модели данных), который учитывает промежуточный родительский элемент. Один родительский элемент может быть связан с динамической языковой системой, чтобы обеспечить мост (например, помещенный в цепочку прототипов JavaScript).

Требования

Требование Ценность
заголовка dbgmodel.h

См. также

Обзор модели данных отладчика C++