Type.GetField Type.GetField Type.GetField Type.GetField Method

Définition

Obtient un champ spécifique du Type actuel.Gets a specific field of the current Type.

Surcharges

GetField(String) GetField(String) GetField(String) GetField(String)

Recherche le champ public portant le nom spécifié.Searches for the public field with the specified name.

GetField(String, BindingFlags) GetField(String, BindingFlags) GetField(String, BindingFlags) GetField(String, BindingFlags)

Recherche le champ spécifié, à l’aide des contraintes de liaison spécifiées.Searches for the specified field, using the specified binding constraints.

GetField(String) GetField(String) GetField(String) GetField(String)

Recherche le champ public portant le nom spécifié.Searches for the public field with the specified name.

public:
 virtual System::Reflection::FieldInfo ^ GetField(System::String ^ name);
public System.Reflection.FieldInfo GetField (string name);
abstract member GetField : string -> System.Reflection.FieldInfo
override this.GetField : string -> System.Reflection.FieldInfo
Public Function GetField (name As String) As FieldInfo

Paramètres

name
String String String String

Chaîne contenant le nom du champ de données à obtenir.The string containing the name of the data field to get.

Retours

Objet représentant le champ public avec le nom spécifié, s'il est trouvé ; sinon, null.An object representing the public field with the specified name, if found; otherwise, null.

Implémente

Exceptions

Cet objet Type est un TypeBuilder dont la méthode CreateType() n’a pas encore été appelée.This Type object is a TypeBuilder whose CreateType() method has not yet been called.

Exemples

L’exemple suivant obtient l' Type objet pour la classe spécifiée, obtient l' FieldInfo objet pour le champ et affiche la valeur du champ.The following example gets the Type object for the specified class, obtains the FieldInfo object for the field, and displays the value of the field.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyFieldClassA
{
public:
   String^ field;
   MyFieldClassA()
   {
      field = "A Field";
   }


   property String^ Field 
   {
      String^ get()
      {
         return field;
      }

      void set( String^ value )
      {
         if ( field != value )
         {
            field = value;
         }
      }

   }

};

public ref class MyFieldClassB
{
public:
   String^ field;
   MyFieldClassB()
   {
      field = "B Field";
   }


   property String^ Field 
   {
      String^ get()
      {
         return field;
      }

      void set( String^ value )
      {
         if ( field != value )
         {
            field = value;
         }
      }

   }

};

int main()
{
   try
   {
      MyFieldClassB^ myFieldObjectB = gcnew MyFieldClassB;
      MyFieldClassA^ myFieldObjectA = gcnew MyFieldClassA;
      Type^ myTypeA = Type::GetType( "MyFieldClassA" );
      FieldInfo^ myFieldInfo = myTypeA->GetField( "field" );
      Type^ myTypeB = Type::GetType( "MyFieldClassB" );
      FieldInfo^ myFieldInfo1 = myTypeB->GetField( "field", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
      Console::WriteLine( "The value of the field is : {0} ", myFieldInfo->GetValue( myFieldObjectA ) );
      Console::WriteLine( "The value of the field is : {0} ", myFieldInfo1->GetValue( myFieldObjectB ) );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }

}


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

Imports System.Reflection

Public Class MyFieldClassA
    Public Field As String = "A Field"
End Class 'MyFieldClassA

Public Class MyFieldClassB
    Private myField As String = "B Field"

    Public Property Field() As String
        Get
            Return myField
        End Get
        Set(ByVal Value As String)
            If myField <> value Then
                myField = value
            End If
        End Set
    End Property
End Class 'MyFieldClassB


Public Class MyFieldInfoClass

    Public Shared Sub Main()
        Dim myFieldObjectB As New MyFieldClassB()
        Dim myFieldObjectA As New MyFieldClassA()

        Dim myTypeA As Type = GetType(MyFieldClassA)
        Dim myFieldInfo As FieldInfo = myTypeA.GetField("Field")

        Dim myTypeB As Type = GetType(MyFieldClassB)
        Dim myFieldInfo1 As FieldInfo = myTypeB.GetField("myField", _
            BindingFlags.NonPublic Or 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))
    End Sub

End Class 'MyFieldInfoClass

Remarques

La recherche de name respecte la casse.The search for name is case-sensitive. La recherche comprend des champs statiques publics et d’instance publics.The search includes public static and public instance fields.

Si le actuel 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.If the current Type represents a constructed generic type, this method returns the FieldInfo with the type parameters replaced by the appropriate type arguments.

Si le actuel 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.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the fields of the class constraint.

Voir aussi

GetField(String, BindingFlags) GetField(String, BindingFlags) GetField(String, BindingFlags) GetField(String, BindingFlags)

Recherche le champ spécifié, à l’aide des contraintes de liaison spécifiées.Searches for the specified field, using the specified binding constraints.

public:
 abstract System::Reflection::FieldInfo ^ GetField(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.FieldInfo GetField (string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetField : string * System.Reflection.BindingFlags -> System.Reflection.FieldInfo
Public MustOverride Function GetField (name As String, bindingAttr As BindingFlags) As FieldInfo

Paramètres

name
String String String String

Chaîne contenant le nom du champ de données à obtenir.The string containing the name of the data field to get.

bindingAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Combinaison de bits de valeurs d’énumération qui spécifie la façon dont est effectuée la recherche.A bitwise combination of the enumeration values that specify how the search is conducted.

- ou --or- Default pour retourner null.Default to return null.

Retours

Objet représentant le champ qui correspond aux exigences spécifiées, s’il est trouvé ; sinon, null.An object representing the field that matches the specified requirements, if found; otherwise, null.

Implémente

Exceptions

Exemples

L’exemple suivant obtient l' Type objet pour la classe spécifiée, obtient l' FieldInfo objet pour le champ qui correspond aux indicateurs de liaison spécifiés et affiche la valeur du champ.The following example gets the Type object for the specified class, obtains the FieldInfo object for the field that matches the specified binding flags, and displays the value of the field.

using namespace System;
using namespace System::Reflection;
using namespace System::Security;
public ref class MyFieldClassA
{
public:
   String^ field;
   MyFieldClassA()
   {
      field = "A Field";
   }


   property String^ Field 
   {
      String^ get()
      {
         return field;
      }

      void set( String^ value )
      {
         if ( field != value )
         {
            field = value;
         }
      }

   }

};

public ref class MyFieldClassB
{
public:
   String^ field;
   MyFieldClassB()
   {
      field = "B Field";
   }


   property String^ Field 
   {
      String^ get()
      {
         return field;
      }

      void set( String^ value )
      {
         if ( field != value )
         {
            field = value;
         }
      }

   }

};

int main()
{
   try
   {
      MyFieldClassB^ myFieldObjectB = gcnew MyFieldClassB;
      MyFieldClassA^ myFieldObjectA = gcnew MyFieldClassA;
      Type^ myTypeA = Type::GetType( "MyFieldClassA" );
      FieldInfo^ myFieldInfo = myTypeA->GetField( "field" );
      Type^ myTypeB = Type::GetType( "MyFieldClassB" );
      FieldInfo^ myFieldInfo1 = myTypeB->GetField( "field", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
      Console::WriteLine( "The value of the field is : {0} ", myFieldInfo->GetValue( myFieldObjectA ) );
      Console::WriteLine( "The value of the field is : {0} ", myFieldInfo1->GetValue( myFieldObjectB ) );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception Raised!" );
      Console::WriteLine( "Message : {0}", e->Message );
   }

}


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

Imports System.Reflection

Public Class MyFieldClassA
    Public Field As String = "A Field"
End Class 'MyFieldClassA

Public Class MyFieldClassB
    Private myField As String = "B Field"

    Public Property Field() As String
        Get
            Return myField
        End Get
        Set(ByVal Value As String)
            If myField <> value Then
                myField = value
            End If
        End Set
    End Property
End Class 'MyFieldClassB


Public Class MyFieldInfoClass

    Public Shared Sub Main()
        Dim myFieldObjectB As New MyFieldClassB()
        Dim myFieldObjectA As New MyFieldClassA()

        Dim myTypeA As Type = GetType(MyFieldClassA)
        Dim myFieldInfo As FieldInfo = myTypeA.GetField("Field")

        Dim myTypeB As Type = GetType(MyFieldClassB)
        Dim myFieldInfo1 As FieldInfo = myTypeB.GetField("myField", _
            BindingFlags.NonPublic Or 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))
    End Sub

End Class 'MyFieldInfoClass

Remarques

Le tableau suivant indique les membres d’une classe de base qui sont retournés par les méthodes lors de la Get réflexion sur un type.The following table shows what members of a base class are returned by the Get methods when reflecting on a type.

Type de membreMember Type StatiqueStatic Non statiqueNon-Static
ConstructeurConstructor NonNo NonNo
ChampField NonNo Oui.Yes. Un champ est toujours masqué par nom-et-signature.A field is always hide-by-name-and-signature.
événementEvent Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
MéthodeMethod NonNo Oui.Yes. Une méthode (à la fois virtuelles et non virtuelles) peut être masquée ou masquée-par-nom-et-signature.A method (both virtual and non-virtual) can be hide-by-name or hide-by-name-and-signature.
Type imbriquéNested Type NonNo NonNo
PropertyProperty Non applicableNot applicable La règle de système de type commun est que l’héritage est le même que celui des méthodes qui implémentent la propriété.The common type system rule is that the inheritance is the same as that of the methods that implement the property. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature.Reflection treats properties as hide-by-name-and-signature. Voir la remarque 2 ci-dessous.See note 2 below.
  1. Hide-by-Name-and-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.Hide-by-name-and-signature considers all of the parts of the signature, including custom modifiers, return types, parameter types, sentinels, and unmanaged calling conventions. Il s’agit d’une comparaison binaire.This is a binary comparison.

  2. Pour la réflexion, les propriétés et les événements sont masqués par nom et signature.For reflection, properties and events are hide-by-name-and-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 a uniquement un accesseur Get, la propriété de la classe dérivée masque la propriété de la classe de base, et vous ne pouvez pas accéder à la méthode setter sur la classe de base.If you have a property with both a get and a set accessor in the base class, but the derived class has only a get accessor, the derived class property hides the base class property, and you will not be able to access the setter on the base class.

  3. Les attributs personnalisés ne font pas partie du système de type commun.Custom attributes are not part of the common type system.

Les indicateurs BindingFlags de filtre suivants peuvent être utilisés pour définir les champs à inclure dans la recherche :The following BindingFlags filter flags can be used to define which fields to include in the search:

  • Vous devez spécifier BindingFlags.Instance ou BindingFlags.Static pour obtenir un retour.You must specify either BindingFlags.Instance or BindingFlags.Static in order to get a return.

  • Spécifiez BindingFlags.Public pour inclure les champs publics dans la recherche.Specify BindingFlags.Public to include public fields in the search.

  • 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.Specify BindingFlags.NonPublic to include non-public fields (that is, private, internal, and protected fields) in the search.

  • Spécifiez BindingFlags.FlattenHierarchy pour public inclure protected et ajouter des membres statiques dans la hiérarchie. private les membres statiques dans les classes héritées ne sont pas inclus.Specify BindingFlags.FlattenHierarchy to include public and protected static members up the hierarchy; private static members in inherited classes are not included.

Vous pouvez BindingFlags utiliser les indicateurs de modificateur suivants pour modifier le fonctionnement de la recherche :The following BindingFlags modifier flags can be used to change how the search works:

  • BindingFlags.IgnoreCasepour ignorer la casse de name.BindingFlags.IgnoreCase to ignore the case of name.

  • BindingFlags.DeclaredOnlypour rechercher uniquement les champs déclarés sur Typele, et non ceux qui ont simplement été hérités.BindingFlags.DeclaredOnly to search only the fields declared on the Type, not fields that were simply inherited.

Pour plus d'informations, voir System.Reflection.BindingFlags.See System.Reflection.BindingFlags for more information.

Si le actuel 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.If the current Type represents a constructed generic type, this method returns the FieldInfo with the type parameters replaced by the appropriate type arguments.

Si le actuel 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.If the current Type represents a type parameter in the definition of a generic type or generic method, this method searches the fields of the class constraint.

Voir aussi

S’applique à