Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La méthode GetKey sur une référence de clé se comporte comme méthode GetKey sur IModelObject. Elle retourne la valeur de la clé sous-jacente et toutes les métadonnées associées à la clé. Si la valeur de la clé est un accesseur de propriété, cela renvoie l’accesseur de propriété (IModelPropertyAccessor) boxé dans un IModelObject. Cette méthode n’appelle pas les méthodes GetValue ou SetValue sous-jacentes sur l’accesseur de propriété.
Syntaxe
HRESULT GetKey(
_COM_Errorptr_opt_ IModelObject **object,
IKeyStore **metadata
);
Paramètres
object
La valeur de la clé est retournée ici.
metadata
Les métadonnées facultatives associées à la clé sont retournées ici.
Valeur de retour
Cette méthode retourne HRESULT qui indique la réussite ou l’échec.
Remarques
Exemple de code
ComPtr<IModelObject> spObject; /* get an object */
ComPtr<IModelKeyReference> spKeyRef;
if (SUCCEEDED(spObject->GetKeyReference(L"Id", &spKeyRef, nullptr)))
{
ComPtr<IModelObject> spKey;
if (SUCCEEDED(spKeyRef->GetKey(&spKey, nullptr)))
{
// spKey contains the equivalent of spObject->GetKey(L"Id", &spKey, nullptr)
// This may be a property accessor since this was not a GetKeyValue.
// Check and fetch. Note that GetKeyValue would do this for you.
ModelObjectKind kind;
if (SUCCEEDED(spKey->GetKind(&kind)))
{
if (kind == ObjectPropertyAccessor)
{
VARIANT vtProp;
if (SUCCEEDED(spKey->GetIntrinsicValue(&vtProp)))
{
// We are guaranteed *in-process* that the IUnknown is
// an IModelPropertyAccessor via the ObjectPropertyAccessor
IModelPropertyAccessor *pProperty =
static_cast<IModelPropertyAccessor *>(vtProp.punkVal);
// In order to fetch, we need to know the context object and
// the key name. Fetch it from the key reference.
ComPtr<IModelObject> spContextObject;
if (SUCCEEDED(spKeyRef->GetContextObject(&spContextObject)))
{
BSTR keyName;
if (SUCCEEDED(spKeyRef->GetName(&keyName)))
{
ComPtr<IModelObject> spKeyValue;
if (SUCCEEDED(pProperty->GetValue(keyName,
spContextObject.Get(),
&spKeyValue)))
{
// spKeyValue contains the value of the "Id" key.
}
SysFreeString(keyName);
}
}
VariantFree(&vtProp);
}
}
else
{
// spKey contains the value of the "Id" key.
}
}
}
}
Exigences
| Exigence | Valeur |
|---|---|
| d’en-tête | dbgmodel.h |