Condividi tramite


Metodo IDataModelManager::CreateIntrinsicObject (dbgmodel.h)

Il metodo CreateIntrinsicObject è il metodo che riquadri i valori intrinseci in IModelObject. Il chiamante inserisce il valore in COM VARIANT e chiama questo metodo. La gestione modelli di dati restituisce un IModelObject che rappresenta l'oggetto . Si noti che questo metodo viene usato anche per boxare i tipi di base IUnknown fondamentali: funzioni di accesso alle proprietà, metodi, contesti e così via... In questi casi, il metodo objectKind indica il tipo di costrutto basato su IUnknown rappresentato dall'oggetto e il campo punkVal della variante passata è il tipo derivato IUnknown. Il tipo deve essere sottoposto a cast statico all'interfaccia del modello appropriata (ad esempio : IModelPropertyAccessor, IModelMethod, IDebugHostContext e così via...) in fase di elaborazione.

I tipi VARIANT supportati da questo metodo sono VT_UI1, VT_I1, VT_UI2, VT_I2, VT_UI4, VT_I4, VT_UI8, VT_I8, VT_R4, VT_R8, VT_BOOL, VT_BSTR e VT_UNKNOWN (per un set specializzato di tipi derivati IUnknown, come indicato dall'enumerazione ModelObjectKind.

Sintassi

HRESULT CreateIntrinsicObject(
  ModelObjectKind objectKind,
  VARIANT         *intrinsicData,
  IModelObject    **object
);

Parametri

objectKind

Indica il tipo di oggetto sottoposto a boxing. Per le funzioni intrinseche normali che differiscono per il tipo di variante, ObjectIntrinsic viene passato qui. Per altri che sono effettivamente interfacce derivate IUnknown, il tipo di oggetto è uno dei valori nell'enumerazione ModelObjectKind e l'interfaccia in VARIANT deve corrispondere.

intrinsicData

VALORE VARIANT contenente il valore che verrà sottoposto a boxing all'interno di un contenitore IModelObject .

object

Il valore appena boxed (come IModelObject) verrà restituito qui.

Valore restituito

Questo metodo restituisce HRESULT che indica l'esito positivo o negativo.

Commenti

Codice di esempio

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.
}

Requisiti

Requisito Valore
Intestazione dbgmodel.h

Vedi anche

Interfaccia IDataModelManager