Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Type.GetFields méthode (BindingFlags)

 

Date de publication : novembre 2016

En cas de substitution dans une classe dérivée, recherche les champs définis pour le Type actuel, à l'aide des contraintes de liaison spécifiées.

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

public abstract FieldInfo[] GetFields(
	BindingFlags bindingAttr
)

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 actuel ou si aucun des champs définis ne correspond aux contraintes de liaison.

Le GetFields méthode ne retourne pas les champs dans un ordre particulier, tel qu’alphabétique ou l’ordre de déclaration. Votre code ne doit pas dépendent l’ordre dans lequel les champs sont retournés, car cet ordre varie.

Les éléments suivants BindingFlags les indicateurs de filtre peuvent être utilisés pour définir les champs à inclure dans la recherche :

  • Vous devez spécifier soit BindingFlags.Instance ou BindingFlags.Static afin d’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 (autrement dit, les champs privés, internes et protégés) dans la recherche. Seuls protégés et les champs 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 à inclure public et protected des membres statiques dans la hiérarchie ; private des membres statiques dans les classes héritées ne sont pas inclus.

Les éléments suivants BindingFlags les indicateurs de modificateur peuvent être utilisés pour modifier le fonctionnement de la recherche :

  • BindingFlags.DeclaredOnlyPour rechercher uniquement les champs déclarés sur le Type, pas les champs qui ont été simplement hérités.

Pour plus d'informations, voir System.Reflection.BindingFlags.

Si le courant Type représente un type générique construit, cette méthode retourne le FieldInfo objets avec les paramètres de type remplacés par les arguments de type approprié.

Si le courant Type représente un paramètre de type dans la définition d’un type générique ou de 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 GetFields(BindingFlags) (méthode).


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);
            }
        }
    }
}

.NET Framework
Disponible depuis 1.1
Bibliothèque de classes portable
Pris en charge dans : plateformes .NET portables
Silverlight
Disponible depuis 2.0
Silverlight pour Windows Phone
Disponible depuis 7.0
Retour au début
Afficher: