Método IModelObject::GetKey (dbgmodel.h)
O método GetKey obterá o valor (e os metadados associados) de uma determinada chave por nome. Em vez disso, a maioria dos clientes deve utilizar o método GetKeyValue. Se a chave for um acessador de propriedade, chamar esse método retornará o acessador de propriedade (uma interface de IModelPropertyAccessor) em uma IModelObject. Ao contrário de GetKeyValue, esse método não resolverá automaticamente o valor subjacente da chave chamando o método GetValue. Essa responsabilidade é do chamador.
Sintaxe
HRESULT GetKey(
PCWSTR key,
_COM_Errorptr_opt_ IModelObject **object,
IKeyStore **metadata
);
Parâmetros
key
O nome da chave para a qual obter um valor.
object
O valor da chave será retornado neste argumento. Em alguns casos de erro, as informações de erro estendidas podem ser desativadas nesse argumento, mesmo que o método retorne um HRESULT com falha.
metadata
O repositório de metadados associado a essa chave será retornado opcionalmente nesse argumento.
Valor de retorno
Esse método retorna HRESULT que indica êxito ou falha. Os valores retornados E_BOUNDS (ou E_NOT_SET em alguns casos) indica que a chave não pôde ser encontrada.
Observações
de exemplo de código
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.
}
}
}
Requisitos
Requisito | Valor |
---|---|
cabeçalho | dbgmodel.h |