Método IModelObject::AddParentModel (dbgmodel.h)
El método AddParentModel agrega un nuevo modelo primario al objeto especificado. Este modelo se puede agregar al final de la cadena de búsqueda (el argumento override se especifica como false) o en la parte frontal de la cadena de búsqueda (el argumento override se especifica como true). Además, cada modelo primario puede ajustar opcionalmente el contexto (la semántica de este puntero) para cualquier propiedad o concepto en el elemento primario dado (o cualquier persona de su jerarquía primaria). El ajuste de contexto rara vez se usa, pero permite algunos conceptos eficaces como la inserción de objetos, la construcción de espacios de nombres, etc...
Cuando un modelo primario tiene un ajuste de contexto, el modelo de datos principal realizará este ajuste automáticamente en nombre del autor de la llamada. En efecto, para una instancia de objeto con un modelo primario que tiene un ajustador de contexto a newContext, una llamada de
instance->GetKeyValue("someKey", &pValue, nullptr);
terminará cambiando el contexto o este puntero de la instancia a newContext antes de llamar al método GetValue de someKey, ya que el acceso a someKey pasó a través del ajustador de contexto.
Cualquier IModelObject que se agrega como modelo primario a otro objeto debe admitir individualmente el concepto de IDataModelConcept. Si no se implementa este concepto, se produce un error en la llamada al método AddParentModel.
Sintaxis
HRESULT AddParentModel(
IModelObject *model,
IModelObject *contextObject,
bool override
);
Parámetros
model
Un IModelObject que se agregará a la cadena del modelo primario del objeto especificado. Esta IModelObject debe admitir individualmente el concepto de IDataModelConcept.
contextObject
Si el modelo de datos tiene un ajuste de contexto asociado, el contexto ajustado (o un descriptor de acceso de propiedad que devuelve el contexto ajustado) se puede pasar aquí.
override
Indicación de si el modelo primario especificado por el argumento del modelo se coloca en la parte delantera o al final de la cadena lineal de modelos primarios. Un valor de false (normalmente proporcionado) indica el final de la cadena. Un valor true indica la parte delantera de la cadena.
Valor devuelto
Este método devuelve HRESULT que indica éxito o error.
Observaciones
** Ejemplo de código**
ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IModelObject> spObject; /* get an object */
// A data model *MUST* implement IDataModelConcept. Create an implementation of this and a string conversion.
class MyDataModel :
public Microsoft::WRL::RuntimeClass<
Microsoft::WRL::RuntimeClassFlags<Microsoft::WRL::RuntimeClassType::ClassicCom>,
IDataModelConcept,
IStringDisplayableConcept
>
{
public:
IFACEMETHOD(InitializeObject)(_In_ IModelObject * /*pModelObject*/,
_In_opt_ IDebugHostTypeSignature * /*pMatchingSignature*/,
_In_opt_ IDebugHostSymbolEnumerator * /*pWildcardMatches*/)
{
return S_OK;
}
IFACEMETHOD(GetName)(_Out_ BSTR *pModelName)
{
return E_NOTIMPL;
}
IFACEMETHOD(ToDisplayString)(_In_ IModelObject * /*pContextObject*/,
_In_opt_ IKeyStore * /*pMetadata */,
_Out_ BSTR *pDisplayString)
{
*pDisplayString = SysAllocString(L"Hello World");
return *pDisplayString == nullptr ? E_OUTOFMEMORY : S_OK;
}
};
// Create the data model, an object for it, set concepts, and add it as a parent to spObject.
ComPtr<MyDataModel> spDataModel = Microsoft::WRL::Make<MyDataModel>();
ComPtr<IModelObject> spDataModelObject;
if (spDataModel != nullptr &&
SUCCEEDED(spManager->CreateDataModelObject(spDataModel.Get(), &spDataModelObject)) &&
SUCCEEDED(spDataModelObject->SetConcept(__uuidof(IStringDisplayableConcept),
static_cast<IStringDisplayableConcept *>
(spDataModel.Get()),
nullptr)))
{
if (SUCCEEDED(spObject->AddParentModel(spDataModelObject.Get(), nullptr, false)))
{
// spObject has been *EXTENDED* to have a display string. It has a parent model
// which has that concept. That extension (and whatever else was added
// on spDataModelObject) can be removed with a single RemoveParentModel call.
}
}
Requisitos
Requisito | Valor |
---|---|
encabezado de | dbgmodel.h |