Método IModelPropertyAccessor::SetValue (dbgmodel.h)
O método SetValue é o setter para o acessador de propriedade. Ele é chamado sempre que um cliente deseja atribuir um valor à propriedade subjacente. Muitas propriedades são somente leitura. Nesses casos, chamar o método SetValue retornará E_NOTIMPL. Observe que qualquer chamador que obtém diretamente um acessador de propriedade é responsável por passar o nome da chave e o objeto de instância preciso (este ponteiro) para o método SetValue do acessador de propriedade.
Sintaxe
HRESULT SetValue(
PCWSTR key,
IModelObject *contextObject,
IModelObject *value
);
Parâmetros
key
O nome da chave para a qual obter um valor. Um chamador que busca um acessador de propriedade diretamente é responsável por passar isso com precisão.
contextObject
O objeto de contexto (instância deste ponteiro) do qual o acessador de propriedade foi buscado.
value
O valor a ser atribuído à propriedade.
Retornar valor
Esse método retorna HRESULT que indica êxito ou falha.
Comentários
Código de exemplo
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 |
---|---|
Cabeçalho | dbgmodel.h |