IModelPropertyAccessor::SetValue 方法 (dbgmodel.h)

SetValue 方法是属性访问器的 setter。 每当客户端希望将值赋给基础属性时,将调用它。 许多属性是只读属性。 在这种情况下,调用 SetValue 方法将返回E_NOTIMPL。 请注意,任何直接获取属性访问器的调用方都负责将此指针 (密钥名称和准确的实例对象) 传递给属性访问器的 SetValue 方法。

语法

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

参数

key

要获取其值的键的名称。 直接提取属性访问器的调用方负责准确传递此访问器。

contextObject

上下文对象 (从中获取属性访问器) 实例此指针。

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

要求

要求
Header dbgmodel.h

另请参阅

IModelPropertyAcessor 接口