Método IDataModelManager::CreateIntrinsicObject (dbgmodel.h)
El método CreateIntrinsicObject es el método que boxiza los valores intrínsecos en IModelObject. El llamador coloca el valor en una VARIANTE COM y llama a este método. El administrador de modelos de datos devuelve un IModelObject que representa el objeto . Tenga en cuenta que este método también se usa para boxar tipos básicos basados en IUnknown: descriptores de acceso de propiedad, métodos, contextos, etc. En tales casos, el método objectKind indica qué tipo de construcción basada en IUnknown representa el objeto y el campo punkVal de la variante pasada es el tipo derivado IUnknown. El tipo se debe convertir estáticamente a la interfaz de modelo adecuada (por ejemplo: IModelPropertyAccessor, IModelMethod, IDebugHostContext, etc.) en proceso.
Los tipos VARIANT admitidos por este método son VT_UI1, VT_I1, VT_UI2, VT_I2, VT_UI4, VT_I4, VT_UI8, VT_I8, VT_R4, VT_R8, VT_BOOL, VT_BSTR y VT_UNKNOWN (para un conjunto especializado de tipos derivados IUnknown como se indica en la enumeración ModelObjectKind.
Sintaxis
HRESULT CreateIntrinsicObject(
ModelObjectKind objectKind,
VARIANT *intrinsicData,
IModelObject **object
);
Parámetros
objectKind
Indica el tipo de objeto que se está conversión boxeando. Para los intrínsecos normales que difieren según el tipo de variante, ObjectIntrinsic se pasa aquí. Para otros que son interfaces derivadas de IUnknown de forma eficaz, el tipo de objeto es uno de los valores de la enumeración ModelObjectKind y la interfaz de variant debe coincidir.
intrinsicData
Variant que contiene el valor que se va a boxear dentro de un contenedor IModelObject .
object
El valor recién boxeado (como IModelObject) se devolverá aquí.
Valor devuelto
Este método devuelve HRESULT que indica éxito o error.
Comentarios
Código de ejemplo
ComPtr<IDataModelManager> spManager; /* get the data model manager */
VARIANT vtValue;
vtValue.vt = VT_I4;
vtValue.lVal = 42;
// If the object is an VT_UNKNOWN, the first argument to CreateIntrinsicObject
// indicates what KIND of IUnknown. For example, ObjectPropertyAccessor would
// indicate IModelPropertyAccessor. ObjectMethod would indicate IModelMethod, etc...
ComPtr<IModelObject> spValue;
if (SUCCEEDED(spManager->CreateIntrinsicObject(ObjectIntrinsic, &vtValue, &spValue)))
{
// spValue now contains the object (boxed) representation of the int value 42.
}
Requisitos
Requisito | Valor |
---|---|
Header | dbgmodel.h |