Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Type.FindMembers méthode (MemberTypes, BindingFlags, MemberFilter, Object)

 

Date de publication : novembre 2016

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 en cours d'inspection correspond à filterCriteria et false dans le cas contraire. Vous pouvez utiliser les délégués FilterAttribute, FilterName et 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 du membre spécifié.

ou

Tableau vide de type MemberInfo, si le Type actuel n'a pas de membres de type memberType qui correspondent aux critères de filtre.

Exception Condition
ArgumentNullException

filter a la valeur null.

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

Les membres incluent les propriétés, méthodes, champs, événements et ainsi de suite.

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

  • Vous devez spécifier BindingFlags.Instance ou BindingFlags.Static afin d’obtenir un retour.

  • Spécifiez BindingFlags.Instance pour inclure les membres d’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 éléments suivants BindingFlags les indicateurs de modificateur peuvent être utilisés pour modifier le fonctionnement de la recherche :

  • BindingFlags.DeclaredOnly Pour rechercher uniquement les membres déclarés sur le Type, qui ont été simplement hérités.

Pour plus d'informations, voir System.Reflection.BindingFlags.

Les valeurs valides de MemberType sont définis dans MemberInfo. Si aucun membre 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 TypeInitializer propriété.

Si le courant Type représente un paramètre de type d’un type générique ou 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 dans une classe qui correspondent aux critères de recherche spécifiés, 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
Disponible depuis 1.1
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Retour au début
Afficher: