Partager via


Type.GetMembers Méthode

Définition

Obtient les membres (propriétés, méthodes, champs, événements, et ainsi de suite) du paramètre actif Type.

Surcharges

Nom Description
GetMembers(BindingFlags)

En cas de substitution dans une classe dérivée, recherche les membres définis pour la Typeactuelle, à l’aide des contraintes de liaison spécifiées.

GetMembers()

Retourne tous les membres publics du Typeactuel.

GetMembers(BindingFlags)

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

En cas de substitution dans une classe dérivée, recherche les membres définis pour la Typeactuelle, à l’aide des contraintes de liaison spécifiées.

public:
 abstract cli::array <System::Reflection::MemberInfo ^> ^ GetMembers(System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public abstract System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public abstract System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.MemberInfo[] GetMembers(System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
abstract member GetMembers : System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
abstract member GetMembers : System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
abstract member GetMembers : System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public MustOverride Function GetMembers (bindingAttr As BindingFlags) As MemberInfo()

Paramètres

bindingAttr
BindingFlags

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

- ou -

Default pour retourner un tableau vide.

Retours

Tableau d’objets représentant tous les membres définis pour le courant Type qui correspondent aux contraintes de MemberInfo liaison spécifiées.

- ou -

Tableau vide si aucun membre n’est défini pour le groupe actif Typeou si aucun des membres définis ne correspond aux contraintes de liaison.

Implémente

Attributs

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 publique d’une classe spécifiée.


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
   }
}
open System.Reflection
open System.Security

type MyClass =
    val public myInt: int
    val public myString: string

    new () = { myInt = 0; myString = null}

    member _.MyMethod() = ()

try
    let MyObject = MyClass()

    // Get the type of the class 'MyClass'.
    let myType = MyObject.GetType()

    // Get the public instance members of the class 'MyClass'.
    let myMemberInfo = myType.GetMembers(BindingFlags.Public ||| BindingFlags.Instance)

    printfn $"\nThe public instance members of class '{myType}' are : \n"
    for i = 0 to myMemberInfo.Length - 1 do
        // Display name and type of the member of 'MyClass'.
        printfn $"'{myMemberInfo[i].Name}' is a {myMemberInfo[i].MemberType}"
with :? SecurityException as e ->
    printfn $"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.

Pour que la GetMethods(BindingFlags) surcharge récupère correctement les informations de méthode, l’argument bindingAttr doit inclure au moins un des BindingFlags.StaticBindingFlags.Instance éléments et , ainsi qu’au moins un des BindingFlags.NonPublic éléments et BindingFlags.Public. La seule exception est un appel de méthode avec BindingFlags.NonPubliclequel retourne des informations de membre sur les types imbriqués.

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

  • Spécifiez BindingFlags.Instance d’inclure des méthodes d’instance.

  • Spécifiez BindingFlags.Static d’inclure des méthodes statiques.

  • Spécifiez BindingFlags.Public d’inclure des méthodes publiques dans la recherche.

  • Spécifiez BindingFlags.NonPublic d’inclure des méthodes non publiques (c’est-à-dire des méthodes privées, internes et protégées) dans la recherche. 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.

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

  • Spécifiez BindingFlags.Default uniquement pour retourner un tableau vide MethodInfo .

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

  • BindingFlags.DeclaredOnly pour rechercher uniquement les membres déclarés sur le Type, et non les membres qui étaient simplement hérités.

Pour plus d’informations, consultez System.Reflection.BindingFlags.

Dans .NET 6 et versions antérieures, la GetMembers méthode ne retourne pas de membres dans un ordre particulier, tel que l’ordre alphabétique ou de déclaration. Votre code ne doit pas dépendre de l’ordre dans lequel les membres sont retournés, car cet ordre varie. Toutefois, à partir de .NET 7, l’ordre est déterministe en fonction de l’ordre des métadonnées dans l’assembly.

Pour obtenir l’initialiseur de classe (constructeur statique) à l’aide de cette surcharge de méthode, vous devez spécifier BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic en Visual Basic). Vous pouvez également obtenir l’initialiseur de classe à l’aide de la TypeInitializer propriété.

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

Si le paramètre 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 les membres de s’il n’existe aucune contrainte de Object classe.

Voir aussi

S’applique à

GetMembers()

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

Retourne tous les membres publics du Typeactuel.

public:
 cli::array <System::Reflection::MemberInfo ^> ^ GetMembers();
public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMembers();
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
public System.Reflection.MemberInfo[] GetMembers();
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public System.Reflection.MemberInfo[] GetMembers();
public System.Reflection.MemberInfo[] GetMembers();
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicEvents | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicNestedTypes | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
member this.GetMembers : unit -> System.Reflection.MemberInfo[]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
member this.GetMembers : unit -> System.Reflection.MemberInfo[]
member this.GetMembers : unit -> System.Reflection.MemberInfo[]
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 groupe actuel Type.

- ou -

Tableau vide de type MemberInfo, si le groupe actuel Type n’a pas de membres publics.

Implémente

Attributs

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.

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 );
      }
   }
}
type MyClass =
    val public myInt: int
    val public myString: string

    new () = { myInt = 0; myString = null}

    member _.MyMethod() = ()

try
    let myObject = MyClass()

    // Get the type of 'MyClass'.
    let myType = myObject.GetType()

    // Get the information related to all public member's of 'MyClass'.
    let myMemberInfo = myType.GetMembers()

    printfn $"\nThe members of class '{myType}' are :\n"
    for i = 0 to myMemberInfo.Length - 1 do
    // Display name and type of the concerned member.
        printfn $"'{myMemberInfo[i].Name}' is a {myMemberInfo[i].MemberType}"
with e ->
    printfn $"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.

Dans .NET 6 et versions antérieures, la GetMembers méthode ne retourne pas de membres dans un ordre particulier, tel que l’ordre alphabétique ou de déclaration. Votre code ne doit pas dépendre de l’ordre dans lequel les membres sont retournés, car cet ordre varie. Toutefois, à partir de .NET 7, l’ordre est déterministe en fonction de l’ordre des métadonnées dans l’assembly.

Cette surcharge de méthode appelle la GetMembers(BindingFlags) surcharge de méthode, avecBindingFlags.InstanceBindingFlags.Static | BindingFlags.Public | (BindingFlags.StaticBindingFlags.PublicOrBindingFlags.InstanceOr en Visual Basic). Il ne trouvera pas d’initialiseurs de classe (constructeurs statiques). Pour rechercher des initialiseurs de classe, appelez la GetMembers(BindingFlags) surcharge et spécifiez | BindingFlags.NonPublicBindingFlags.Static(BindingFlags.StaticOrBindingFlags.NonPublicen Visual Basic). Vous pouvez également obtenir l’initialiseur de classe à l’aide de la TypeInitializer propriété.

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

Type de membre Statique Non statique
Constructor Non Non
Champ Non Yes. Un champ est toujours masqué par nom et signature.
Événement Sans objet La règle du système de type courant est que l'héritage est identique à celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquage par nom et signature. Voir la note 2 ci-dessous.
Méthode Non Yes. Une méthode (virtuelle et non virtuelle) peut être masquée par nom ou par nom et signature.
Type imbriqué Non Non
Propriété Sans objet La règle du système de type courant est que l'héritage est identique à celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme masquage par nom et signature. Voir la note 2 ci-dessous.
  1. Hide-by-name-and-signature prend en compte toutes les parties de la signature, notamment 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.

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

Si le paramètre 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 les membres de s’il n’existe aucune contrainte de Object classe.

Voir aussi

S’applique à