Condividi tramite


Metodo IDataModelManager2::CreateIntrinsicObject (dbgmodel.h)

Il metodo CreateIntrinsicObject è il metodo che riquadri i valori intrinseci in IModelObject. Il chiamante inserisce il valore in UN VALORE COM VARIANT e chiama questo metodo. Gestione modelli di dati restituisce un oggetto IModelObject che rappresenta l'oggetto. Si noti che questo metodo viene usato anche per casellare i tipi di base IUnknown fondamentali: funzioni di accesso delle proprietà, metodi, contesti e così via... In questi casi, il metodo objectKind indica quale tipo di costrutto basato su IUnknown rappresenta l'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...) nel processo.

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 in cui viene eseguito il boxing. Per le normali intrinseche che differiscono dal tipo variant, 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

VARIANT contenente il valore che verrà casellato all'interno di un contenitore IModelObject .

object

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

Valore restituito

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

Commenti

Codice di esempio

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

Interfaccia IDataModelManager2

Requisiti

Requisito Valore
Intestazione dbgmodel.h