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 |