Compartir a través de


Método IModelObject::GetKey (dbgmodel.h)

El método GetKey obtendrá el valor de (y los metadatos asociados a) una clave determinada por nombre. La mayoría de los clientes deben usar el método GetKeyValue en su lugar. Si la clave es un descriptor de acceso de propiedad, al llamar a este método se devolverá el descriptor de acceso de propiedad (un IModelPropertyAccessor interfaz) boxed en un IModelObject. A diferencia de GetKeyValue, este método no resolverá automáticamente el valor subyacente de la clave llamando al método GetValue. Esa responsabilidad es la del autor de la llamada.

Sintaxis

HRESULT GetKey(
  PCWSTR                          key,
  _COM_Errorptr_opt_ IModelObject **object,
  IKeyStore                       **metadata
);

Parámetros

key

Nombre de la clave para la que se va a obtener un valor.

object

El valor de la clave se devolverá en este argumento. En algunos casos de error, puede que la información de error extendida se pase en este argumento aunque el método devuelva un HRESULT con error.

metadata

El almacén de metadatos asociado a esta clave se devolverá opcionalmente en este argumento.

Valor devuelto

Este método devuelve HRESULT que indica éxito o error. Los valores devueltos E_BOUNDS (o E_NOT_SET en algunos casos) indican que no se encontró la clave.

Observaciones

de ejemplo de código de

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
encabezado de dbgmodel.h

Consulte también

interfaz IModelObject