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
|
Type.FindInterfaces, méthode
Assembly : mscorlib (dans mscorlib.dll)
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)| Exception | Condition |
|---|---|
| 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.
Remarque
|
|---|
|
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; } }
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.
Remarque