IDynamicKeyProviderConcept 接口 (dbgmodel.h)

如果客户端想要接管对象的密钥和值的存储,它可以实现此概念接口。

对象是密钥的动态提供程序,希望从核心数据模型接管所有键查询。 此接口通常用作动态语言(如 JavaScript)的桥梁。

继承

IDynamicKeyProviderConcept 继承自 IUnknown。

方法

IDynamicKeyProviderConcept 接口具有这些方法。

 
IDynamicKeyProviderConcept::AddRef

IDynamicKeyProviderConcept::AddRef 方法递增对象上接口的引用计数。
IDynamicKeyProviderConcept::EnumerateKeys

动态密钥提供程序上的 EnumerateKeys 方法实际上是 IModelObject 上的 EnumerateKeys 方法的替代。
IDynamicKeyProviderConcept::GetKey

动态密钥提供程序上的 GetKey 方法在很大程度上是 IModelObject 上的 GetKey 方法的替代。
IDynamicKeyProviderConcept::QueryInterface

IDynamicKeyProviderConcept::QueryInterface 方法检索指向对象上支持接口的指针。
IDynamicKeyProviderConcept::Release

IDynamicKeyProviderConcept::Release 方法递减对象上接口的引用计数。
IDynamicKeyProviderConcept::SetKey

动态密钥提供程序上的 SetKey 方法实际上是 IModelObject 上的 SetKey 方法的替代。

注解

动态提供程序概念

虽然数据模型本身通常处理对象的键和概念管理,但有时该概念并不理想。 特别是,当客户端希望在数据模型和其他真正动态 ((例如 JavaScript) )之间建立桥梁时,从数据模型中的实现中接管密钥和概念管理可能会很有价值。 由于核心数据模型是 IModelObject 的唯一实现,而是通过两个概念的组合实现:动态关键提供程序概念和动态概念提供程序概念。 虽然通常要实现两者或两者都不实现,但不需要这样做。

如果两者都实现了,则必须在动态概念提供程序概念之前添加动态密钥提供程序概念。 这两个概念都是特殊的。 它们有效地翻转对象的开关,将其从“静态管理”更改为“动态管理”。 仅当对象上没有数据模型管理的键/概念时,才能设置这些概念。 将这些概念添加到 对象后,执行此操作的操作是不可撤销的。 IModelObject 与不是动态概念提供程序的 IModelObject 之间的扩展性还有另外一个语义差异。 这些概念旨在允许客户端在数据模型和动态语言系统(如 JavaScript)之间创建桥梁。 数据模型具有扩展性的概念,它与 JavaScript 等系统有一些根本区别,即存在父模型树,而不是 JavaScript 原型链这样的线性链。 为了更好地与此类系统建立关系,作为动态概念提供程序的 IModelObject 具有单个数据模型父级。 该单一数据模型父级是一个普通 的 IModelObject ,它可以具有任意数量的父模型,就像数据模型的典型一样。 向动态概念提供程序添加或删除父级的任何请求都会自动重定向到单一父级。 从局外人的角度来看,动态概念提供程序似乎具有父模型的正常树样式链。 动态概念提供程序概念的实现者是核心数据模型之外唯一 (对象,) 知道中间单一父级。 可以将该单一父级链接到动态语言系统,以提供一个桥 (例如:放置在 JavaScript 原型链) 中。

要求

要求
Header dbgmodel.h

另请参阅

调试器数据模型 C++ 概述