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


Интерфейс 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++