다음을 통해 공유


IModelPropertyAccessor::SetValue 메서드(dbgmodel.h)

SetValue 메서드는 속성 접근자의 setter입니다. 클라이언트가 기본 속성에 값을 할당하려고 할 때마다 호출됩니다. 대부분의 속성이 읽기 전용입니다. 이러한 경우 SetValue 메서드를 호출하면 E_NOTIMPL 반환됩니다. 속성 접근자를 직접 가져오는 호출자는 키 이름과 정확한 instance 개체(이 포인터)를 속성 접근자의 SetValue 메서드에 전달해야 합니다.

구문

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

매개 변수

key

값을 가져올 키의 이름입니다. 속성 접근자를 직접 가져오는 호출자는 이를 정확하게 전달해야 합니다.

contextObject

속성 접근자를 가져온 컨텍스트 개체(이 포인터 instance)입니다.

value

속성에 할당할 값입니다.

반환 값

이 메서드는 성공 또는 실패를 나타내는 HRESULT를 반환합니다.

설명

예제 코드

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

요구 사항

요구 사항
헤더 dbgmodel.h

추가 정보

IModelPropertyAcessor 인터페이스