Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Type.FindMembers, méthode

Retourne un tableau filtré d'objets MemberInfo du type du membre spécifié.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)
public virtual MemberInfo[] FindMembers(
	MemberTypes memberType,
	BindingFlags bindingAttr,
	MemberFilter filter,
	Object filterCriteria
)

Paramètres

memberType
Type : System.Reflection.MemberTypes
Objet qui indique le type du membre à rechercher.
bindingAttr
Type : System.Reflection.BindingFlags
Masque de bits constitué d'un ou de plusieurs BindingFlags spécifiant le mode d'exécution de la recherche.
ou
Zéro, pour retourner null.
filter
Type : System.Reflection.MemberFilter
Délégué qui effectue les comparaisons, retournant true si le membre actuellement en cours d'inspection correspond à filterCriteria et false dans le cas contraire. Vous pouvez utiliser FilterAttribute, FilterName et les délégués FilterNameIgnoreCase fournis par cette classe. Le premier délégué utilise les champs de FieldAttributes, MethodAttributes et MethodImplAttributes comme critère de recherche et les deux autres utilisent les objets String.
filterCriteria
Type : System.Object
Critère de recherche qui détermine si un membre est retourné dans le tableau d'objets MemberInfo.
Les champs de FieldAttributes, MethodAttributes et MethodImplAttributes peuvent être utilisés conjointement au délégué FilterAttribute fourni par cette classe.

Valeur de retour

Type : System.Reflection.MemberInfo[]
Tableau filtré d'objets MemberInfo du type de membre spécifié.
ou
Tableau vide de type MemberInfo, si le Type en cours n'a pas de membres de type memberType qui correspondent aux critères de filtre.

Implémentations

_Type.FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Exception Condition
ArgumentNullException

filter est null.

Cette méthode peut être substituée par une classe dérivée.

Parmi les membres figurent des propriétés, méthodes, champs, événements, etc.

Les indicateurs de filtre BindingFlags suivants peuvent être utilisés pour définir les membres à inclure dans la recherche :

  • Vous devez spécifier soit BindingFlags.Instance, soit BindingFlags.Static pour obtenir un retour.

  • Spécifiez BindingFlags.Instance pour inclure les membres de l'instance dans la recherche.

  • Spécifiez BindingFlags.Static pour inclure les membres statiques dans la recherche.

  • Spécifiez BindingFlags.Public pour inclure les membres publics dans la recherche.

  • Spécifiez BindingFlags.NonPublic pour inclure les membres non publics (c'est-à-dire les membres privés, internes et protégés) dans la recherche.

Les indicateurs de modificateur BindingFlags suivants peuvent être utilisés pour modifier le fonctionnement de la recherche :

  • BindingFlags.DeclaredOnly pour limiter la recherche aux membres déclarés dans Type et exclure ceux qui ont été simplement hérités.

Consultez System.Reflection.BindingFlags pour plus d'informations.

Les valeurs valides pour MemberType sont définies dans MemberInfo. Si aucun membre tel n'est trouvé, un tableau vide est retourné.

Pour obtenir l'initialiseur de classe (.cctor) à l'aide de cette méthode, vous devez spécifier BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic en Visual Basic). Vous pouvez également obtenir l'initialiseur de classe à l'aide de la propriété TypeInitializer.

Si le Type actuel représente un paramètre de type d'un type ou d'une méthode générique, FindMembers traite tous les membres déclarés par la contrainte de classe et les contraintes d'interface du paramètre de type.

L'exemple suivant recherche tous les membres d'une classe satisfaisant aux critères de recherche, puis affiche les membres correspondants.


using System;
using System.Reflection;

class MyFindMembersClass
{
    public static void Main()
    {
        Object objTest = new Object();
        Type objType = objTest.GetType ();
        MemberInfo[] arrayMemberInfo;
        try
        {
            //Find all static or public methods in the Object class that match the specified name.
            arrayMemberInfo = objType.FindMembers(MemberTypes.Method,
                BindingFlags.Public | BindingFlags.Static| BindingFlags.Instance,
                new MemberFilter(DelegateToSearchCriteria),
                "ReferenceEquals");

            for(int index=0;index < arrayMemberInfo.Length ;index++)
                Console.WriteLine ("Result of FindMembers -\t"+ arrayMemberInfo[index].ToString() +"\n");                 
        }
        catch (Exception e)
        {
            Console.WriteLine ("Exception : " + e.ToString() );            
        }           
    }
    public static bool DelegateToSearchCriteria(MemberInfo objMemberInfo, Object objSearch)
    {
        // Compare the name of the member function with the filter criteria.
        if(objMemberInfo.Name.ToString() == objSearch.ToString())
            return true;
        else 
            return false;
    }
}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ