Metode IModelPropertyAccessor::SetValue (dbgmodel.h)

Metode SetValue adalah setter untuk pengaktor properti. Ini dipanggil setiap kali klien ingin menetapkan nilai ke properti yang mendasar. Banyak properti bersifat baca-saja. Dalam kasus seperti itu, memanggil metode SetValue akan mengembalikan E_NOTIMPL. Perhatikan bahwa setiap penelepon yang secara langsung mendapatkan pengakses properti bertanggung jawab untuk meneruskan nama kunci dan objek instans yang akurat (penunjuk ini) ke metode SetValue pengakses properti.

Sintaks

HRESULT SetValue(
  PCWSTR       key,
  IModelObject *contextObject,
  IModelObject *value
);

Parameter

key

Nama kunci untuk mendapatkan nilai. Penelepon yang mengambil pengakses properti secara langsung bertanggung jawab untuk melewati ini secara akurat.

contextObject

Objek konteks (contoh penunjuk ini) tempat pengaktor properti diambil.

value

Nilai yang akan ditetapkan ke properti .

Mengembalikan nilai

Metode ini mengembalikan HRESULT yang menunjukkan keberhasilan atau kegagalan.

Keterangan

Kode Sampel

class MyReadWriteProperty :
    public Microsoft::WRL::RuntimeClass<
        Microsoft::WRL::RuntimeClassFlags<
            Microsoft::WRL::RuntimeClassType::ClassicCom
            >,
        IModelPropertyAccessor
        >
{
public:

    IFACEMETHOD(GetValue)(_In_ PCWSTR /*pwszKey*/, 
                          _In_ IModelObject * /*pContextObject*/, 
                          _COM_Errorptr_ IModelObject **ppValue)
    {
        HRESULT hr = S_OK;
        *ppValue = nullptr;

        VARIANT vtValue;
        vtValue.vt = VT_I4;
        vtValue.lVal = m_value;
        
        ComPtr<IModelObject> spValue;
        hr = GetManager()->CreateIntrinsicObject(ObjectIntrinsic, &vtValue, &spValue);
        if (SUCCEEDED(hr))
        {
            *ppValue = spValue.Detach();
        }

        return hr;
    }

    IFACEMETHOD(SetValue)(_In_ PCWSTR /*pwszKey*/, 
                          _In_ IModelObject * /*pContextObject*/, 
                          _In_ IModelObject *pValue)
    {
        VARIANT vtValue;
        HRESULT hr = pValue->GetIntrinsicValueAs(VT_I4, &vtValue);
        if (SUCCEEDED(hr))
        {
            m_value = vtValue.lVal;
        }
        return S_OK;
    }

    HRESULT RuntimeClassInitialize(_In_ int value)
    {
        m_value = value;
        return S_OK;
    }

private:

    int m_value;
};

Persyaratan

Persyaratan Nilai
Header dbgmodel.h

Lihat juga

Antarmuka IModelPropertyAcessor