IDebugGenericParamField::GetOwner
Recupera o proprietário de tipo ou método deste parâmetro genérico.
HRESULT GetOwner(
IDebugField** ppOwner
);
int GetOwner(
out IDebugField ppOwner
);
Parâmetros
- ppOwner
[out] Retorna o IDebugField o objeto que possui este parâmetro genérico.
Valor de retorno
Se bem-sucedida, retorna S_OK; Caso contrário, retorna um código de erro.
Exemplo
O exemplo a seguir mostra como implementar este método para um CDebugGenericParamFieldType objeto que expõe a IDebugGenericParamField interface.
HRESULT CDebugGenericParamFieldType::GetOwner(IDebugField** ppOwner)
{
HRESULT hr = S_OK;
CComPtr<IMetaDataImport> pMetadata;
METHOD_ENTRY( CDebugGenericParamFieldType::GetOwner );
IfFalseGo(ppOwner, E_INVALIDARG );
*ppOwner = NULL;
IfFailGo( this->LoadProps() );
IfFailGo( m_spSH->GetMetadata( m_idModule, &pMetadata ) );
switch (TypeFromToken(m_tokOwner))
{
case mdtMethodDef:
{
mdTypeDef tokClass;
CComPtr<IDebugField> pClass;
CDEBUG_ADDRESS caddr;
CComPtr<IDebugContainerField> pContainer;
IfFailGo( pMetadata->GetMethodProps( m_tokOwner, &tokClass, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL ) );
IfFailGo( m_spSH->CreateClassType(m_idModule, tokClass, &pClass) );
IfFailGo( pClass->QueryInterface( &pContainer ) );
IfFailGo( caddr.InitializeMethod( m_idModule, tokClass, m_tokOwner, 0, 0 ) );
IfFailGo( m_spSH->CreateMethodSymbol( pContainer, caddr, FIELD_SYM_MEMBER, ppOwner ) );
break;
}
case mdtTypeDef:
{
IfFailGo( m_spSH->CreateClassType(m_idModule, m_tokOwner, ppOwner) );
break;
}
default:
{
ASSERT(!"Unexpected Owner type for Generic Param Field");
hr = E_FAIL;
}
}
Error:
METHOD_EXIT( CDebugGenericParamFieldType::GetOwner, hr );
return hr;
}