Informations
Le sujet que vous avez demandé est indiqué ci-dessous. Toutefois, ce sujet ne figure pas dans la bibliothèque.

Type.FindInterfaces, méthode

Retourne un tableau d'objets Type représentant une liste filtrée d'interfaces implémentées ou héritées par le Type en cours.

Espace de noms :  System
Assembly :  mscorlib (dans mscorlib.dll)

public virtual Type[] FindInterfaces(
	TypeFilter filter,
	Object filterCriteria
)

Paramètres

filter
Type : System.Reflection.TypeFilter
Délégué qui compare les interfaces à filterCriteria.
filterCriteria
Type : System.Object
Critère de recherche qui détermine si une interface doit être incluse dans le tableau retourné.

Valeur de retour

Type : System.Type[]
Un tableau d'objets Type qui représente une liste filtrée des interfaces implémentées ou héritées par le Type en cours ou un tableau vide de type Type si aucune interface correspondant au filtre n'est implémentée ou héritée par le Type en cours.

Implémentations

_Type.FindInterfaces(TypeFilter, Object)

ExceptionCondition
ArgumentNullException

filter est null.

TargetInvocationException

Un initialiseur statique est appelé et lève une exception.

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

Les délégués Module.FilterTypeName et Module.FilterTypeNameIgnoreCase fournis par la classe System.Reflection.Module peuvent également être utilisés, à la place du délégué System.Reflection.TypeFilter.

Toutes les interfaces implémentées par cette classe sont prises en compte pendant la recherche, qu'elles soient déclarées par une classe de base ou cette classe elle-même.

Cette méthode effectue une recherche dans la hiérarchie de la classe de base, retournant chacune des interfaces correspondantes implémentée par chaque classe ainsi que toutes les interfaces correspondantes implémentées par chacune de ces interfaces (c'est-à-dire que la fermeture transitive des interfaces correspondantes est retournée). Aucune interface double n'est retournée.

Si le Type actuel représente un paramètre de type dans la définition d'un type ou d'une méthode générique, FindInterfaces recherche toutes les interfaces déclarées dans les contraintes qui s'exercent sur le paramètre de type et toutes les interfaces héritées via les interfaces déclarées dans les contraintes. Si le Type actuel représente un argument de type d'un type générique, FindInterfaces recherche toutes les interfaces implémentées par ce type, qu'elles correspondent ou non aux contraintes.

RemarqueRemarque

FindInterfaces peut retourner des interfaces génériques, même sur des types qui ne sont pas génériques. Par exemple, un type non générique peut implémenter IEnumerable<int> (IEnumerable(Of Integer) en Visual Basic).

L'exemple suivant recherche l'interface spécifiée implémentée ou héritée par le type spécifié, puis affiche les noms d'interfaces.


using System;
using System.Xml;
using System.Reflection;

public class MyFindInterfacesSample 
{
    public static void Main()
    {
        try
        {
            XmlDocument myXMLDoc = new XmlDocument();
            myXMLDoc.LoadXml("<book genre='novel' ISBN='1-861001-57-5'>" +
                "<title>Pride And Prejudice</title>" + "</book>");
            Type myType = myXMLDoc.GetType();

            // Specify the TypeFilter delegate that compares the 
            // interfaces against filter criteria.
            TypeFilter myFilter = new TypeFilter(MyInterfaceFilter);
            String[] myInterfaceList = new String[2] 
                {"System.Collections.IEnumerable", 
                "System.Collections.ICollection"};
            for(int index=0; index < myInterfaceList.Length; index++)
            {
                Type[] myInterfaces = myType.FindInterfaces(myFilter, 
                    myInterfaceList[index]);
                if (myInterfaces.Length > 0) 
                {
                    Console.WriteLine("\n{0} implements the interface {1}.",
                        myType, myInterfaceList[index]);	
                    for(int j =0;j < myInterfaces.Length;j++)
                        Console.WriteLine("Interfaces supported: {0}.", 
                            myInterfaces[j].ToString());
                }
                else
                    Console.WriteLine(
                        "\n{0} does not implement the interface {1}.", 
                        myType,myInterfaceList[index]);	
            }
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException: " + e.Message);
        }
        catch(TargetInvocationException e)
        {
            Console.WriteLine("TargetInvocationException: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception: " + e.Message);
        }
    }

    public static bool MyInterfaceFilter(Type typeObj,Object criteriaObj)
    {
        if(typeObj.ToString() == criteriaObj.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.

Ajouts de la communauté

Afficher:
© 2014 Microsoft