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.GetField méthode (String, BindingFlags)

 

Date de publication : novembre 2016

Recherche le champ spécifié, à l'aide des contraintes de liaison spécifiées.

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

public abstract FieldInfo GetField(
	string name,
	BindingFlags bindingAttr
)

Paramètres

name
Type: System.String

Chaîne contenant le nom du champ de données à obtenir.

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

Objet représentant le champ qui correspond aux critères spécifiés, s'il est trouvé ; sinon, null.

Exception Condition
ArgumentNullException

name a la valeur null.

Le tableau suivant présente les membres d’une classe de base sont retournés par la Get méthodes lors de la réflexion sur un type.

Type de membre

Statique

Non statique

Constructeur

Non

Non

Champ

Non

Oui. Un champ est toujours masquer-par-nom-et-signature.

Événement

Non applicable

La règle de système de type commun est que l’héritage est identique à celle des méthodes qui implémentent la propriété. Réflexion traite les propriétés comme masquer-par-nom-et-signature. Voir la Remarque 2 ci-dessous.

Méthode

Non

Oui. Une méthode (virtuelle et non virtuelle) peut être masquer par nom ou masquer-par-nom-et-signature.

Type imbriqué

Non

Non

Propriété

Non applicable

La règle de système de type commun est que l’héritage est identique à celle des méthodes qui implémentent la propriété. Réflexion traite les propriétés comme masquer-par-nom-et-signature. Voir la Remarque 2 ci-dessous.

  1. Masquer-par-nom-et-signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, des conventions d’appel non managées, les types de paramètres, les sentinelles et les types de retour. Il s’agit d’une comparaison binaire.

  2. Pour la réflexion, les propriétés et événements sont masquer-par-nom-et-signature. Si vous avez une propriété avec une commande get et un accesseur set de la classe de base, mais la classe dérivée possède uniquement un accesseur get, la propriété de la classe dérivée masque la propriété de classe de base, et vous ne pourrez pas accéder à l’accesseur Set sur la classe de base.

  3. Attributs personnalisés ne font pas partie du système de type commun.

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.

  • 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.IgnoreCasepour ignorer la casse de name.

  • 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 la FieldInfo 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 de la contrainte de classe.

L’exemple suivant obtient la Type de l’objet pour la classe spécifiée, qui obtient le FieldInfo objet pour le champ qui correspond aux indicateurs de liaison spécifiés et affiche la valeur du champ.


using System;
using System.Reflection;

public class MyFieldClassA
{
    public string Field = "A Field";
}

public class MyFieldClassB
{
    private string field = "B Field";
    public string Field 
    {
        get
        {
            return field;
        }
        set
        {
            if (field!=value)
            {
                field=value;
            }
        }
    }
}

public class MyFieldInfoClass
{
    public static void Main()
    {
        MyFieldClassB myFieldObjectB = new MyFieldClassB();
        MyFieldClassA myFieldObjectA = new MyFieldClassA();

        Type myTypeA = typeof(MyFieldClassA);
        FieldInfo myFieldInfo = myTypeA.GetField("Field");

        Type myTypeB = typeof(MyFieldClassB);
        FieldInfo myFieldInfo1 = myTypeB.GetField("field", 
            BindingFlags.NonPublic | BindingFlags.Instance);

        Console.WriteLine("The value of the public field is: '{0}'", 
            myFieldInfo.GetValue(myFieldObjectA));
        Console.WriteLine("The value of the private field is: '{0}'", 
            myFieldInfo1.GetValue(myFieldObjectB));
    }
}

.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: