(dbgmodel.h) 的 IModelObject::GetKey 方法
GetKey 方法會依名稱取得指定索引鍵 (的值和與) 相關聯的元數據。 大部分的客戶端都應該改用 GetKeyValue 方法。 如果索引鍵是屬性存取子,呼叫這個方法會傳回屬性存取子 (IModelPropertyAccessor 介面,) Boxed 到 IModelObject 中。 不同於 GetKeyValue,此方法不會藉由呼叫 GetValue 方法自動解析索引鍵的基礎值。 該責任是呼叫端的責任。
語法
HRESULT GetKey(
PCWSTR key,
_COM_Errorptr_opt_ IModelObject **object,
IKeyStore **metadata
);
參數
key
要為其取得值的索引鍵名稱。
object
索引鍵的值將會在此自變數中傳回。 在某些情況下,即使方法傳回失敗的 HRESULT,此自變數中仍可能會傳回擴充錯誤資訊。
metadata
與這個索引鍵相關聯的元數據存放區將會在此自變數中選擇性地傳回。
傳回值
這個方法會傳回表示成功或失敗的 HRESULT。 在某些情況下E_BOUNDS (或E_NOT_SET傳回值,) 表示找不到索引鍵。
備註
程式碼範例
ComPtr<IModelObject> spProcess; /* get a process object */
ComPtr<IModelObject> spIdKey;
if (SUCCEEDED(spProcess->GetKey(L"Id", &spIdKey, nullptr)))
{
// Unlike GetKeyValue(), spIdKey may contain a value or it may be a
// *property* that needs to be fetched. Check!
ModelObjectKind kind;
if (SUCCEEDED(spIdKey->GetKind(&kind)))
{
if (kind == ObjectPropertyAccessor)
{
VARIANT vtProp;
if (SUCCEEDED(spIdKey->GetIntrinsicValue(&vtProp)))
{
// There is an *in-process* guarantee because of
// ObjectPropertyAccessor that the IUnknown is an IModelPropertyAccessor
IModelPropertyAccessor *pPropertyAccessor =
static_cast<IModelPropertyAccessor *>(vtProp.punkVal);
// Fetch the value underneath the property accessor. GetKeyValue
// would have done this for us.
ComPtr<IModelObject> spId;
if (SUCCEEDED(pPropertyAccessor->GetValue(L"Id", spProcess.Get(), &spId)))
{
// spId now contains the value of the id. Unbox with GetIntrinsicValueAs.
}
VariantClear(&vtProp);
}
}
else
{
// spIdKey contains the value. Unbox with GetIntrinsicValueAs.
}
}
}
規格需求
需求 | 值 |
---|---|
標頭 | dbgmodel.h |