Type.GetMembers Type.GetMembers Type.GetMembers Type.GetMembers Method

Définition

Obtient les membres (propriétés, méthodes, champs, événements, etc.) du Type actuel.Gets the members (properties, methods, fields, events, and so on) of the current Type.

Surcharges

GetMembers() GetMembers() GetMembers() GetMembers()

Retourne tous les membres publics du Type actuel.Returns all the public members of the current Type.

GetMembers(BindingFlags) GetMembers(BindingFlags) GetMembers(BindingFlags) GetMembers(BindingFlags)

En cas de substitution dans une classe dérivée, recherche les membres définis pour le Type actuel, à l’aide des contraintes de liaison spécifiées.When overridden in a derived class, searches for the members defined for the current Type, using the specified binding constraints.

GetMembers() GetMembers() GetMembers() GetMembers()

Retourne tous les membres publics du Type actuel.Returns all the public members of the current Type.

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMembers();
public System.Reflection.MemberInfo[] GetMembers ();
abstract member GetMembers : unit -> System.Reflection.MemberInfo[]
override this.GetMembers : unit -> System.Reflection.MemberInfo[]
Public Function GetMembers () As MemberInfo()

Retours

Tableau d'objets MemberInfo représentant tous les membres publics du Type actuel.An array of MemberInfo objects representing all the public members of the current Type.

ou-or- Tableau vide du type MemberInfo si le Type actuel n'a pas de membres publics.An empty array of type MemberInfo, if the current Type does not have public members.

Implémente

Exemples

L’exemple de code suivant montre comment utiliser la GetMembers() surcharge de méthode pour collecter des informations sur tous les membres publics d’une classe spécifiée.The following code example demonstrates how to use the GetMembers() method overload to collect information about all public members of a specified class.

ref class MyClass
{
public:
   int myInt;
   String^ myString;
   MyClass(){}

   void Myfunction(){}

};

int main()
{
   try
   {
      MyClass^ myObject = gcnew MyClass;
      array<MemberInfo^>^myMemberInfo;
      
      // Get the type of 'MyClass'.
      Type^ myType = myObject->GetType();
      
      // Get the information related to all public members of 'MyClass'.
      myMemberInfo = myType->GetMembers();
      Console::WriteLine( "\nThe members of class '{0}' are :\n", myType );
      for ( int i = 0; i < myMemberInfo->Length; i++ )
      {
         
         // Display name and type of the concerned member.
         Console::WriteLine( "'{0}' is a {1}", myMemberInfo[ i ]->Name, myMemberInfo[ i ]->MemberType );

      }
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "Exception : {0}", e->Message );
   }

}

class MyClass
{
   public int myInt = 0;
   public string myString = null;

   public MyClass()
   {
   }
   public void Myfunction()
   {
   }
}

class Type_GetMembers
{
   public static void Main()
   {
      try
      {
         MyClass myObject = new MyClass();
         MemberInfo[] myMemberInfo; 

         // Get the type of 'MyClass'.
         Type myType = myObject.GetType(); 
        
         // Get the information related to all public member's of 'MyClass'. 
         myMemberInfo = myType.GetMembers();
    
         Console.WriteLine( "\nThe members of class '{0}' are :\n", myType); 
         for (int i =0 ; i < myMemberInfo.Length ; i++)
         {
            // Display name and type of the concerned member.
            Console.WriteLine( "'{0}' is a {1}", myMemberInfo[i].Name, myMemberInfo[i].MemberType);
         }
      }
      catch(SecurityException e)
      {
         Console.WriteLine("Exception : " + e.Message ); 
      }
   }
}
Class [MyClass]
   Public myInt As Integer = 0
   Public myString As String = Nothing
   
   
   Public Sub New()
   End Sub
   
   Public Sub Myfunction()
   End Sub
End Class

Class Type_GetMembers
   
   Public Shared Sub Main()
      Try
         Dim myObject As New [MyClass]()
         Dim myMemberInfo() As MemberInfo
         
         ' Get the type of 'MyClass'.
         Dim myType As Type = myObject.GetType()
         
         ' Get the information related to all public member's of 'MyClass'. 
         myMemberInfo = myType.GetMembers()
         
         Console.WriteLine(ControlChars.Cr + "The members of class '{0}' are :" + ControlChars.Cr, myType)
         Dim i As Integer
         For i = 0 To myMemberInfo.Length - 1
            ' Display name and type of the concerned member.
            Console.WriteLine("'{0}' is a {1}", myMemberInfo(i).Name, myMemberInfo(i).MemberType)
         Next i

      Catch e As SecurityException
         Console.WriteLine(("Exception : " + e.Message.ToString()))
      End Try
   End Sub
End Class

Remarques

Les membres incluent des propriétés, des méthodes, des constructeurs, des champs, des événements et des types imbriqués.Members include properties, methods, constructors, fields, events, and nested types.

La GetMembers méthode ne retourne pas de membres dans un ordre particulier, par exemple par ordre alphabétique ou par ordre de déclaration.The GetMembers method does not return members in a particular order, such as alphabetical or declaration order. Votre code ne doit pas dépendre de l’ordre dans lequel les membres sont retournés, car cet ordre varie.Your code must not depend on the order in which members are returned, because that order varies.

Cette surcharge de méthode appelle GetMembers(BindingFlags) la surcharge de méthode BindingFlags.Public ,BindingFlags.Public avec | BindingFlags.Static BindingFlags.Instance | (Or enVisualBasicOr ).BindingFlags.Instance BindingFlags.StaticThis method overload calls the GetMembers(BindingFlags) method overload, with BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static (BindingFlags.PublicOrBindingFlags.InstanceOrBindingFlags.Static in Visual Basic). Il ne trouvera pas d’initialiseurs de classe (constructeurs statiques).It will not find class initializers (static constructors). Pour rechercher des initialiseurs de classe, GetMembers(BindingFlags) appelez la surcharge et BindingFlags.Static spécifiez | BindingFlags.NonPublic (BindingFlags.Static Or BindingFlags.NonPublic en Visual Basic).To find class initializers, call the GetMembers(BindingFlags) overload, and specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Vous pouvez également récupérer l’initialiseur de classe à TypeInitializer l’aide de la propriété.You can also get the class initializer using the TypeInitializer property.

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.

Si le actuel Type représente un type générique construit, cette méthode retourne les MemberInfo objets 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 MemberInfo objects 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 membres de la contrainte de classe ou Object les membres de s’il n’y a aucune 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 members of the class constraint, or the members of Object if there is no class constraint.

Voir aussi

GetMembers(BindingFlags) GetMembers(BindingFlags) GetMembers(BindingFlags) GetMembers(BindingFlags)

En cas de substitution dans une classe dérivée, recherche les membres définis pour le Type actuel, à l’aide des contraintes de liaison spécifiées.When overridden in a derived class, searches for the members defined for the current Type, using the specified binding constraints.

public:
 abstract cli::array <System::Reflection::MemberInfo ^> ^ GetMembers(System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.MemberInfo[] GetMembers (System.Reflection.BindingFlags bindingAttr);
abstract member GetMembers : System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public MustOverride Function GetMembers (bindingAttr As BindingFlags) As MemberInfo()

Paramètres

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 un tableau vide.Default to return an empty array.

Retours

Tableau d'objets MemberInfo représentant tous les membres définis pour le Type actuel qui correspondent aux contraintes de liaison spécifiées.An array of MemberInfo objects representing all members defined for the current Type that match the specified binding constraints.

- ou --or- Tableau vide si aucun membre n’est défini pour le Type actuel ou si aucun des membres définis ne correspond aux contraintes de liaison.An empty array if no members are defined for the current Type, or if none of the defined members match the binding constraints.

Implémente

Exemples

L’exemple de code suivant montre comment utiliser la GetMembers(BindingFlags) surcharge de méthode pour collecter des informations sur tous les membres d’instance publics d’une classe spécifiée.The following code example demonstrates how to use the GetMembers(BindingFlags) method overload to collect information about all public instance members of a specified class.

ref class MyClass
{
public:
   int * myInt;
   String^ myString;
   MyClass(){}

   void Myfunction(){}

};

int main()
{
   try
   {
      MyClass^ MyObject = gcnew MyClass;
      array<MemberInfo^>^myMemberInfo;
      
      // Get the type of the class 'MyClass'.
      Type^ myType = MyObject->GetType();
      
      // Get the public instance members of the class 'MyClass'.
      myMemberInfo = myType->GetMembers( static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
      Console::WriteLine( "\nThe public instance members of class '{0}' are : \n", myType );
      for ( int i = 0; i < myMemberInfo->Length; i++ )
      {
         
         // Display name and type of the member of 'MyClass'.
         Console::WriteLine( "'{0}' is a {1}", myMemberInfo[ i ]->Name, myMemberInfo[ i ]->MemberType );

      }
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException : {0}", e->Message );
   }


      //Output:
      //The public instance members of class 'MyClass' are :

      //'Myfunction' is a Method
      //'ToString' is a Method
      //'Equals' is a Method
      //'GetHashCode' is a Method
      //'GetType' is a Method
      //'.ctor' is a Constructor
      //'myInt' is a Field
      //'myString' is a Field

}


class MyClass
{
   public int myInt = 0;
   public string myString = null;

   public MyClass()
   {
   }
   public void Myfunction()
   {
   }
}

class Type_GetMembers_BindingFlags
{
   public static void Main()
   {
      try
      {
         MyClass MyObject = new MyClass();
         MemberInfo [] myMemberInfo; 

         // Get the type of the class 'MyClass'.
         Type myType = MyObject.GetType(); 
        
         // Get the public instance members of the class 'MyClass'. 
         myMemberInfo = myType.GetMembers(BindingFlags.Public|BindingFlags.Instance);
    
         Console.WriteLine( "\nThe public instance members of class '{0}' are : \n", myType); 
         for (int i =0 ; i < myMemberInfo.Length ; i++)
         {
            // Display name and type of the member of 'MyClass'.
            Console.WriteLine( "'{0}' is a {1}", myMemberInfo[i].Name, myMemberInfo[i].MemberType);
         }

      }
      catch (SecurityException e)
      {
         Console.WriteLine("SecurityException : " + e.Message ); 
      }      

      //Output:
      //The public instance members of class 'MyClass' are :

      //'Myfunction' is a Method
      //'ToString' is a Method
      //'Equals' is a Method
      //'GetHashCode' is a Method
      //'GetType' is a Method
      //'.ctor' is a Constructor
      //'myInt' is a Field
      //'myString' is a Field

   }
}

Class [MyClass]
   Public myInt As Integer = 0
   Public myString As String = Nothing
   
   
   Public Sub New()
   End Sub
   
   Public Sub Myfunction()
   End Sub
End Class

Class Type_GetMembers_BindingFlags
   
   Public Shared Sub Main()
      Try
         Dim MyObject As New [MyClass]()
         Dim myMemberInfo() As MemberInfo
         
         ' Get the type of the class 'MyClass'.
         Dim myType As Type = MyObject.GetType()
         
         ' Get the public instance members of the class 'MyClass'. 
         myMemberInfo = myType.GetMembers((BindingFlags.Public Or BindingFlags.Instance))
         
         Console.WriteLine(ControlChars.Cr + "The public instance members of class '{0}' are : " + ControlChars.Cr, myType)
         Dim i As Integer
         For i = 0 To myMemberInfo.Length - 1
            ' Display name and type of the member of 'MyClass'.
            Console.WriteLine("'{0}' is a {1}", myMemberInfo(i).Name, myMemberInfo(i).MemberType)
         Next i
      
      Catch e As SecurityException
         Console.WriteLine(("SecurityException : " + e.Message.ToString()))
      End Try


      'Output:
      'The public instance members of class 'MyClass' are :

      ''Myfunction' is a Method
      ''ToString' is a Method
      ''Equals' is a Method
      ''GetHashCode' is a Method
      ''GetType' is a Method
      ''.ctor' is a Constructor
      ''myInt' is a Field
      ''myString' is a Field


   End Sub
End Class

Remarques

Les membres incluent des propriétés, des méthodes, des constructeurs, des champs, des événements et des types imbriqués.Members include properties, methods, constructors, fields, events, and nested types.

Pour que GetMethods(BindingFlags) la surcharge récupère correctement les informations de méthode bindingAttr , l’argument doit inclure au moins BindingFlags.Instance un BindingFlags.Staticde et, ainsi qu’au moins BindingFlags.NonPublic un BindingFlags.Publicde et.For the GetMethods(BindingFlags) overload to successfully retrieve method information, the bindingAttr argument must include at least one of BindingFlags.Instance and BindingFlags.Static, along with at least one of BindingFlags.NonPublic and BindingFlags.Public. La seule exception est un appel de méthode BindingFlags.NonPublicavec, qui retourne des informations de membre sur les types imbriqués.The sole exception is a method call with BindingFlags.NonPublic, which returns member information about nested types.

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

  • Spécifiez BindingFlags.Instance pour inclure des méthodes d’instance.Specify BindingFlags.Instance to include instance methods.

  • Spécifiez BindingFlags.Static pour inclure des méthodes statiques.Specify BindingFlags.Static to include static methods.

  • Spécifiez BindingFlags.Public pour inclure les méthodes publiques dans la recherche.Specify BindingFlags.Public to include public methods in the search.

  • Spécifiez BindingFlags.NonPublic pour inclure les méthodes non publiques (c’est-à-dire les méthodes privées, internes et protégées) dans la recherche.Specify BindingFlags.NonPublic to include non-public methods (that is, private, internal, and protected methods) in the search. Seules les méthodes protégées et internes sur les classes de base sont retournées ; les méthodes privées sur les classes de base ne sont pas retournées.Only protected and internal methods on base classes are returned; private methods on base classes are not returned.

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

  • Spécifiez BindingFlags.Default seul pour retourner un MethodInfo tableau vide.Specify BindingFlags.Default alone to return an empty MethodInfo array.

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.DeclaredOnlypour rechercher uniquement les membres déclarés sur Typele, et non les membres qui ont simplement été hérités.BindingFlags.DeclaredOnly to search only the members declared on the Type, not members that were simply inherited.

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

La GetMembers méthode ne retourne pas de membres dans un ordre particulier, par exemple par ordre alphabétique ou par ordre de déclaration.The GetMembers method does not return members in a particular order, such as alphabetical or declaration order. Votre code ne doit pas dépendre de l’ordre dans lequel les membres sont retournés, car cet ordre varie.Your code must not depend on the order in which members are returned, because that order varies.

Pour récupérer l’initialiseur de classe (constructeur statique) à l’aide de cette surcharge de BindingFlags.Static méthodeBindingFlags.Static , vous devez spécifier | BindingFlags.NonPublic (Or BindingFlags.NonPublic dans Visual Basic).To get the class initializer (static constructor) using this method overload, you must specify BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). Vous pouvez également récupérer l’initialiseur de classe à TypeInitializer l’aide de la propriété.You can also get the class initializer using the TypeInitializer property.

Si le actuel Type représente un type générique construit, cette méthode retourne les MemberInfo objets 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 MemberInfo objects 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 membres de la contrainte de classe ou Object les membres de s’il n’y a aucune 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 members of the class constraint, or the members of Object if there is no class constraint.

Voir aussi

S’applique à