IDebugComPlusSymbolProvider2::GetTypesByNameIDebugComPlusSymbolProvider2::GetTypesByName

Recupera un tipo dado su nombre.Retrieves a type given its name.

SintaxisSyntax

HRESULT GetTypesByName(  
   LPCOLESTR          pszClassName,  
   NAME_MATCH         nameMatch,  
   IEnumDebugFields** ppEnum  
);  
int GetTypesByName(  
   string               pszClassName,  
   enum_ NAME_MATCH     nameMatch,  
   out IEnumDebugFields ppEnum  
);  

ParámetrosParameters

pszClassName
[in] Nombre del tipo.[in] Name of the type.

nameMatch
[in] Selecciona el tipo de coincidencia, por ejemplo, distingue mayúsculas de minúsculas.[in] Selects the type of match, for example, case-sensitive. Un valor de la NAME_MATCH enumeración.A value from the NAME_MATCH enumeration.

ppEnum
[out] Un enumerador que contiene el tipo o tipos con el nombre especificado.[out] An enumerator that contains the type or types with the given name.

Valor devueltoReturn Value

Si se realiza correctamente, devuelve S_OK; en caso contrario, devuelve un código de error.If successful, returns S_OK; otherwise, returns an error code.

ComentariosRemarks

Para los tipos genéricos, el nombre para buscar una "lista<int >' o ' lista<int, int >' sería"List".For generic types, the name to look up for 'List<int>' or 'List<int,int>' would be 'List'. Si los tipos del mismo nombre aparecen en varios módulos, el ppEnum parámetro contendrá todas las copias.If types of the same name appear in multiple modules, the ppEnum paramter will contain all copies. Tiene que usar GetTypeInfo y distinguir en función de la guidModule parámetro.You have to use GetTypeInfo and distinguish based on the guidModule parameter.

EjemploExample

En el ejemplo siguiente se muestra cómo implementar este método para un CDebugSymbolProvider objeto que expone la IDebugComPlusSymbolProvider2 interfaz.The following example shows how to implement this method for a CDebugSymbolProvider object that exposes the IDebugComPlusSymbolProvider2 interface.

HRESULT CDebugSymbolProvider::GetTypesByName(  
    LPCOLESTR pszClassName,  
    NAME_MATCH nameMatch,  
    IEnumDebugFields** ppEnum  
)  
{  
    HRESULT hr = S_OK;  
    CModIter ModIter;  
    CModule* pmodule; // the iterator owns the reference  
    CFieldList listField;  

    ASSERT(IsValidWideStringPtr(pszClassName));  
    ASSERT(IsValidWritePtr(ppEnum, IEnumDebugFields*));  

    METHOD_ENTRY( CDebugSymbolProvider::GetTypesByName );  

    IfFalseGo( pszClassName && ppEnum, E_INVALIDARG );  
    *ppEnum = NULL;  

    IfFailGo( GetModuleIter(&ModIter) );  

    hr = S_FALSE;  

    if ( nameMatch == nmCaseInsensitive)  
    {  
        while (ModIter.GetNext(&pmodule))  
        {  
            if (pmodule->FindTypesByNameCaseInsensitive( pszClassName,  
                    &listField,  
                    this ) )  
            {  
                hr = S_OK;  
            }  
        }  
    }  
    else  
    {  
        while (ModIter.GetNext(&pmodule))  
        {  
            if (pmodule->FindTypesByName( pszClassName,  
                                          &listField,  
                                          this) )  
            {  
                hr = S_OK;  
            }  
        }  
    }  

    // If the list is empty then no type  
    IfFalseGo( listField.GetCount(), E_FAIL );  

    // Create enumerator  
    IfFailGo( CreateEnumerator( ppEnum, &listField ) );  

Error:  

    METHOD_EXIT( CDebugSymbolProvider::GetTypesByName, hr );  

    return hr;  
}  

Vea tambiénSee Also

IDebugComPlusSymbolProvider2IDebugComPlusSymbolProvider2