Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Récupère un type donné son nom.
Syntaxe
int GetTypesByName(
string pszClassName,
enum_ NAME_MATCH nameMatch,
out IEnumDebugFields ppEnum
);
Paramètres
pszClassName
[in] Nom du type.
nameMatch
[in] Sélectionne le type de correspondance, par exemple, respectant la casse. Valeur de l’énumération NAME_MATCH .
ppEnum
[out] Énumérateur qui contient le type ou les types portant le nom donné.
Valeur de retour
En cas de réussite, retourne S_OK , sinon, retourne un code d'erreur.
Notes
Pour les types génériques, le nom à rechercher pour « List<int> » ou « List int , int> » est « List<». Si les types du même nom apparaissent dans plusieurs modules, le ppEnum paramètre contient toutes les copies. Vous devez utiliser GetTypeInfo et distinguer en fonction du guidModule paramètre.
Exemple
L’exemple suivant montre comment implémenter cette méthode pour un objet CDebugSymbolProvider qui expose l’interface IDebugComPlusSymbolProvider2 .
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;
}