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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk