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.GetNestedTypes, méthode (BindingFlags)
En cas de substitution dans une classe dérivée, recherche les types imbriqués dans le Type actuel, à l'aide des contraintes de liaison spécifiées.
Assembly : mscorlib (dans mscorlib.dll)
Paramètres
- 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.
Valeur de retour
Type : System.Type[]Tableau d'objets Type représentant tous les types imbriqués dans le Type actuel qui correspondent aux contraintes de liaison spécifiées (la recherche n'est pas récursive), ou tableau vide de type Type si aucun type imbriqué correspondant aux contraintes de liaison n'est trouvé.
Implémentations
_Type.GetNestedTypes(BindingFlags)La recherche pour les types imbriqués n'est pas récursive.
La méthode GetNestedTypes ne retourne pas les types dans un ordre spécifique, par exemple par ordre alphabétique ou par ordre de déclaration. Votre code ne doit pas être fonction de l'ordre dans lequel les types sont retournés, car cet ordre varie.
Les indicateurs de filtre BindingFlags suivants peuvent être utilisés pour définir les types imbriqués à inclure dans la recherche :
-
Vous devez spécifier soit BindingFlags.Public, soit BindingFlags.NonPublic pour obtenir un retour.
-
Spécifiez BindingFlags.Public pour inclure les types imbriqués publics dans la recherche.
-
Spécifiez BindingFlags.NonPublic pour inclure des types imbriqués non publics (c'est-à-dire des types imbriqués privés, internes et protégés) dans la recherche.
Cette méthode retourne uniquement les types imbriqués du type actuel. Elle ne recherche pas les classes de base du type actuel. Pour rechercher des types qui sont imbriqués dans les classes de base, vous devez parcourir la hiérarchie d'héritage, en appelant GetNestedTypes à chaque niveau.
BindingFlags.Instance et BindingFlags.Static sont ignorés.
L'appel à cette méthode avec uniquement les indicateurs BindingFlags.Public ou BindingFlags.NonPublic retournera les types imbriqués spécifiés et ne nécessite aucun autre indicateur.
Consultez System.Reflection.BindingFlags pour plus d'informations.
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, cette méthode recherche les types imbriqués de la contrainte de classe.
Si un type imbriqué est générique, cette méthode retourne sa définition de type générique. Cela est vrai même si le type générique englobant est un type construit fermé.
Remarque
|
|---|
|
Si le Type actuel représente un type générique défini en C#, Visual Basic ou C++, ses types imbriqués sont tous génériques même s'ils ne possèdent pas leurs propres paramètres génériques. Cela n'est pas nécessairement vrai pour les types imbriqués définis dans des assemblys dynamiques ou compilés avec l'Ilasm.exe (Assembleur MSIL). |
Pour plus d'informations sur les types génériques imbriqués et sur la construction de types génériques imbriqués à partir de leurs définitions de type générique, consultez MakeGenericType.
L'exemple suivant crée deux classes publiques imbriquées et deux classes protégées imbriquées, et il affiche des informations sur les classes correspondant aux contraintes de liaison spécifiées.
using System; using System.Reflection; using System.Reflection.Emit; // Create a class with two nested public classes and two nested protected classes. public class MyTypeClass { public class Myclass1 { } public class Myclass2 { } protected class MyClass3 { } protected class MyClass4 { } } public class TypeMain { public static void Main() { Type myType =(typeof(MyTypeClass)); // Get the public nested classes. Type[] myTypeArray = myType.GetNestedTypes(BindingFlags.Public|BindingFlags.Instance); Console.WriteLine("The number of nested public classes is {0}.", myTypeArray.Length); // Display all the public nested classes. DisplayTypeInfo(myTypeArray); // Get the nonpublic nested classes. Type[] myTypeArray1 = myType.GetNestedTypes(BindingFlags.NonPublic|BindingFlags.Instance); Console.WriteLine("The number of nested protected classes is {0}.", myTypeArray1.Length); // Display all the nonpublic nested classes. DisplayTypeInfo(myTypeArray1); } public static void DisplayTypeInfo(Type[] myArrayType) { // Display the information for all the nested classes. for(int i=0;i<myArrayType.Length;i++) { Type myType = (Type)myArrayType[i]; Console.WriteLine("The name of the nested class is {0}.", myType.ToString()); } }
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