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