Exporter (0) Imprimer
Développer tout
Développer Réduire

Type.FindMembers, méthode

Mise à jour : novembre 2007

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
)
public MemberInfo[] FindMembers(
	MemberTypes memberType,
	BindingFlags bindingAttr,
	MemberFilter filter,
	Object filterCriteria
)
public function FindMembers(
	memberType : MemberTypes, 
	bindingAttr : BindingFlags, 
	filter : MemberFilter, 
	filterCriteria : Object
) : MemberInfo[]

Paramètres

memberType
Type : System.Reflection.MemberTypes
Objet MemberTypes indiquant 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 du 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)

ExceptionCondition
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. Si le membre demandé est non public et si l'appelant ne possède pas de ReflectionPermission pour réfléchir les objets non publics en dehors de l'assembly actuel, cette méthode retourne null.

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 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.Static Or BindingFlags.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;
    }
}


import System.*;
import System.Reflection.*;

class MyFindMembersClass
{
    public static void main(String[] args)
    {
        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.get_Item(index).ToString() + "\n");
            }
        }
        catch (System.Exception e) {
            Console.WriteLine("Exception : " + e.ToString());
        }
    } //main

    public static boolean DelegateToSearchCriteria(MemberInfo objMemberInfo,
        Object objSearch)
    {
        // Compare the name of the member function with the filter criteria.
        if (objMemberInfo.get_Name().ToString().Equals(objSearch.ToString())) {
            return true;
        }
        else {
            return false;
        }
    } //DelegateToSearchCriteria
} //MyFindMembersClass


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

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

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft