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.GetFields, méthode (BindingFlags)
En cas de substitution dans une classe dérivée, recherche les champs définis pour le Type en cours, à 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.Reflection.FieldInfo[]Tableau d'objets FieldInfo représentant tous les champs définis pour le Type actuel qui correspondent aux contraintes de liaison spécifiées.
ou
Tableau vide du type FieldInfo si aucun champ n'est défini pour le Type en cours ou si aucun des champs définis ne correspond aux contraintes de liaison.
Implémentations
_Type.GetFields(BindingFlags)IReflect.GetFields(BindingFlags)
La méthode GetFields ne retourne pas les champs dans un ordre particulier, tel que l'ordre alphabétique ou l'ordre de déclaration. Votre code ne doit pas être fonction de l'ordre dans lequel les champs sont retournés, car cet ordre varie.
Les indicateurs de filtre BindingFlags suivants peuvent être utilisés pour définir les champs à inclure dans la recherche :
-
Vous devez spécifier soit BindingFlags.Instance, soit BindingFlags.Static pour obtenir un retour.
-
Spécifiez BindingFlags.Public pour inclure les champs publics dans la recherche.
-
Spécifiez BindingFlags.NonPublic pour inclure les champs non publics (c'est-à-dire les champs privés, internes et protégés) dans la recherche. Seuls les champs protégés et internes sur les classes de base sont retournés ; les champs privés sur les classes de base ne sont pas retournés.
-
Spécifiez BindingFlags.FlattenHierarchy pour inclure les membres statiques public et protected en haut de la hiérarchie ; les membres statiques private dans les classes héritées ne sont pas inclus.
Les indicateurs de modificateur BindingFlags suivants peuvent être utilisés pour modifier le fonctionnement de la recherche :
-
BindingFlags.DeclaredOnly pour limiter la recherche aux champs déclarés dans Type et exclure ceux qui ont été simplement hérités.
Consultez System.Reflection.BindingFlags pour plus d'informations.
Si le Type actuel représente un type générique construit, cette méthode retourne les objets FieldInfo avec les paramètres de type remplacés par les arguments de type appropriés.
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 champs publics de la contrainte de classe.
L'exemple suivant illustre une utilisation de la méthode GetFields(BindingFlags).
using System; using System.Reflection; class AttributesSample { public void Mymethod (int int1m, out string str2m, ref string str3m) { str2m = "in Mymethod"; } public static int Main(string[] args) { Console.WriteLine ("Reflection.MethodBase.Attributes Sample"); // Get the type. Type MyType = Type.GetType("AttributesSample"); // Get the method Mymethod on the type. MethodBase Mymethodbase = MyType.GetMethod("Mymethod"); // Display the method name. Console.WriteLine("Mymethodbase = " + Mymethodbase); // Get the MethodAttribute enumerated value. MethodAttributes Myattributes = Mymethodbase.Attributes; // Display the flags that are set. PrintAttributes(typeof(System.Reflection.MethodAttributes), (int) Myattributes); return 0; } public static void PrintAttributes(Type attribType, int iAttribValue) { if (!attribType.IsEnum) { Console.WriteLine("This type is not an enum."); return; } FieldInfo[] fields = attribType.GetFields(BindingFlags.Public | BindingFlags.Static); for (int i = 0; i < fields.Length; i++) { int fieldvalue = (Int32)fields[i].GetValue(null); if ((fieldvalue & iAttribValue) == fieldvalue) { Console.WriteLine(fields[i].Name); } } } }
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.