Método IModelPropertyAccessor::SetValue (dbgmodel.h)

El método SetValue es el establecedor para el descriptor de acceso de propiedad. Se llama cada vez que un cliente desea asignar un valor a la propiedad subyacente. Muchas propiedades son de solo lectura. En tales casos, llamar al método SetValue devolverá E_NOTIMPL. Tenga en cuenta que cualquier llamador que obtenga directamente un descriptor de acceso de propiedad es responsable de pasar el nombre de clave y el objeto de instancia preciso (este puntero) al método SetValue del descriptor de acceso de propiedad.

Sintaxis

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

Parámetros

key

Nombre de la clave para la que se va a obtener un valor. Un llamador que captura directamente un descriptor de acceso de propiedad es responsable de pasar esto con precisión.

contextObject

Objeto de contexto (instancia de este puntero) desde el que se capturó el descriptor de acceso de propiedad.

value

Valor que se asigna a la propiedad.

Valor devuelto

Este método devuelve HRESULT que indica éxito o error.

Comentarios

Código de ejemplo

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

Requisitos

Requisito Valor
Header dbgmodel.h

Consulte también

Interfaz IModelPropertyAcessor