IDebugHostEvaluator2::AssignTo 方法 (dbgmodel.h)
AssignTo 方法根据所调试语言的语义执行赋值。
语法
HRESULT AssignTo(
IModelObject *assignmentReference,
IModelObject *assignmentValue,
_COM_Errorptr_ IModelObject **assignmentResult,
IKeyStore **assignmentMetadata
);
参数
assignmentReference
对要分配的事物的引用。 虽然这可以是基于模型的引用 (例如 ObjectTargetObjectReference) 或语言引用 (例如 C++ &) ,但它必须是 LVALUE) (某种类型的引用。
assignmentValue
要分配给通过 assignmentReference 参数引用的内容的值。 请注意,在分配此值之前,可能会根据语言规则强制转换此值。
assignmentResult
分配的结果(如果成功)。 如果不是,可以选择一个扩展错误对象,指示分配失败的原因。 请注意,在本例中,赋值的结果是语言定义为赋值操作的结果。 对于 C++,这将是对所分配内容的语言引用。
assignmentMetadata
此处返回与分配结果关联的任何可选元数据。
返回值
此方法返回指示成功或失败的 HRESULT。
注解
代码示例
ComPtr<IDebugHost> spHost; /* get the host */
ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IModelObject> spObject; /* get an object; for an example - consider a
'class MyClass' with an integer value
m_intVal */
ComPtr<IDebugHostEvaluator2> spEval2;
if (SUCCEEDED(spHost.As(&spEval2)))
{
// Get a reference to the m_intVal field
ComPtr<IModelObject> spIntValRef;
if (SUCCEEDED(spObject->GetRawReference(SymbolField,
L"m_intVal",
RawSearchNone,
&spIntValRef)))
{
// Box some value we want to assign.
VARIANT vtVal;
vtVal.vt = VT_UI8;
vtVal.ullVal = 123456;
ComPtr<IModelObject> spAssignmentValue;
if (SUCCEEDED(spManager->CreateIntrinsicObject(ObjectIntrinsic,
&vtVal,
&spAssignmentValue)))
{
ComPtr<IModelObject> spAssignmentResult;
if (SUCCEEDED(spEval2->AssignTo(spIntValRef.Get(),
spAssignmentValue.Get(),
&spAssignmentResult,
nullptr)))
{
// The (unsigned __int64)123456 was assigned to m_intVal with
// the set of coercions defined by the language (C++)
// spAssignmentResult has the language meaning of operator=()
// in this case. This would be a MyClass&.
}
}
}
}
要求
要求 | 值 |
---|---|
Header | dbgmodel.h |