Lire en anglais

Partager via


Type.GetField Méthode

Définition

Obtient un champ spécifique du Type actuel.

Surcharges

GetField(String)

Recherche le champ public portant le nom spécifié.

GetField(String, BindingFlags)

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

GetField(String)

Source:
Type.cs
Source:
Type.cs
Source:
Type.cs

Recherche le champ public portant le nom spécifié.

C#
public System.Reflection.FieldInfo? GetField (string name);
C#
public System.Reflection.FieldInfo GetField (string name);

Paramètres

name
String

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

Retours

Objet représentant le champ public avec le nom spécifié, s'il est trouvé ; sinon, null.

Implémente

Exceptions

name a la valeur null.

Cet objet Type est un TypeBuilder dont la méthode CreateType() n’a pas encore été appelée.

Exemples

L’exemple suivant obtient l’objet Type pour la classe spécifiée, obtient l’objet FieldInfo pour le champ et affiche la valeur du champ.

C#

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

Remarques

La recherche respecte name la casse. La recherche inclut des champs d’instance publique statique et publique.

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

Si le courant Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique, cette méthode recherche les champs de la contrainte de classe.

Voir aussi

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

GetField(String, BindingFlags)

Source:
Type.cs
Source:
Type.cs
Source:
Type.cs

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

C#
public abstract System.Reflection.FieldInfo? GetField (string name, System.Reflection.BindingFlags bindingAttr);
C#
public abstract System.Reflection.FieldInfo GetField (string name, System.Reflection.BindingFlags bindingAttr);

Paramètres

name
String

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

bindingAttr
BindingFlags

Combinaison de bits de valeurs d’énumération qui spécifie la façon dont est effectuée la recherche.

- ou -

Default pour retourner null.

Retours

Objet représentant le champ qui correspond aux exigences spécifiées, s’il est trouvé ; sinon, null.

Implémente

Exceptions

name a la valeur null.

Exemples

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

C#

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

Remarques

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

Type de membre Statique Non statique
Constructeur Non Non
Champ Non Oui. Un champ est toujours masqué par nom et signature.
Événement Non applicable La règle système de type courante est que l’héritage est le même que celui des méthodes qui implémentent la propriété. Reflection traite les propriétés comme masquer par nom et signature. Voir la note 2 ci-dessous.
Méthode Non Oui. Une méthode (virtuelle et non virtuelle) peut être hide-by-name ou hide-by-name-and-signature.
Type imbriqué Non Non
Propriété Non applicable La règle système de type courante est que l’héritage est le même que celui des méthodes qui implémentent la propriété. Reflection traite les propriétés comme masquer par nom et signature. Voir la note 2 ci-dessous.
  1. Masquer par nom et signature prend en compte toutes les parties de la signature, y compris les modificateurs personnalisés, les types de retour, les types de paramètres, les sentinelles et les conventions d’appel non managées. Il s’agit d’une comparaison binaire.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom-et-signature. Si vous avez une propriété avec un accesseur get et un accesseur set dans la classe de base, mais que la classe dérivée n’a qu’un accesseur get, la propriété de classe dérivée masque la propriété de classe de base et vous ne pourrez pas accéder au setter sur la classe de base.

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

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

  • Vous devez spécifier ou BindingFlags.InstanceBindingFlags.Static pour obtenir un retour.

  • Spécifiez BindingFlags.Public pour inclure des champs publics dans la recherche.

  • Spécifiez BindingFlags.NonPublic pour inclure des champs non publics (c’est-à-dire des champs privés, internes et protégés) dans la recherche.

  • Spécifiez BindingFlags.FlattenHierarchy pour inclure et protected les public membres statiques dans la hiérarchie ; private les membres statiques dans les classes héritées ne sont pas inclus.

Les indicateurs de modification suivants BindingFlags peuvent être utilisés pour modifier le fonctionnement de la recherche :

  • BindingFlags.IgnoreCase pour ignorer le cas de name.

  • BindingFlags.DeclaredOnly pour rechercher uniquement les champs déclarés sur , Typeet non les champs qui ont simplement été hérités.

Consultez la rubrique System.Reflection.BindingFlags (éventuellement en anglais) pour plus d'informations.

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

Si le courant Type représente un paramètre de type dans la définition d’un type générique ou d’une méthode générique, cette méthode recherche les champs de la contrainte de classe.

Voir aussi

S’applique à

.NET 9 et autres versions
Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1