IModelObject::Metode GetKey (dbgmodel.h)

Metode GetKey akan mendapatkan nilai (dan metadata yang terkait dengan) kunci tertentu berdasarkan nama. Sebagian besar klien harus menggunakan metode GetKeyValue sebagai gantinya. Jika kuncinya adalah pengakses properti, memanggil metode ini akan mengembalikan pengakses properti (antarmuka IModelPropertyAccessor ) yang dikotak ke dalam IModelObject. Tidak seperti GetKeyValue, metode ini tidak akan secara otomatis menyelesaikan nilai kunci yang mendasar dengan memanggil metode GetValue. Tanggung jawab itu milik penelepon.

Sintaks

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

Parameter

key

Nama kunci untuk mendapatkan nilai.

object

Nilai kunci akan dikembalikan dalam argumen ini. Dalam beberapa kasus kesalahan, informasi kesalahan yang diperluas dapat diteruskan dalam argumen ini meskipun metode mengembalikan HRESULT yang gagal.

metadata

Penyimpanan metadata yang terkait dengan kunci ini akan dikembalikan secara opsional dalam argumen ini.

Mengembalikan nilai

Metode ini mengembalikan HRESULT yang menunjukkan keberhasilan atau kegagalan. Nilai yang dikembalikan E_BOUNDS (atau E_NOT_SET dalam beberapa kasus) menunjukkan kunci tidak dapat ditemukan.

Keterangan

Sampel Kode

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.
        }
    }
}

Persyaratan

Persyaratan Nilai
Header dbgmodel.h

Lihat juga

Antarmuka IModelObject