Partager via


Type.GetMember Méthode

Définition

Obtient les membres spécifiés du Type actuel.

Surcharges

GetMember(String)

Recherche les membres publics portant le nom spécifié.

GetMember(String, BindingFlags)

Recherche les membres spécifiés, à l'aide des contraintes de liaison spécifiées.

GetMember(String, MemberTypes, BindingFlags)

Recherche les membres spécifiés du type de membre spécifié, à l’aide des contraintes de liaison spécifiées.

GetMember(String)

Recherche les membres publics portant le nom spécifié.

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

Paramètres

name
String

Chaîne contenant le nom des membres publics à obtenir.

Retours

MemberInfo[]

Tableau d'objets MemberInfo représentant les membres publics portant le nom spécifié, si ces objets sont trouvés ; sinon, un tableau vide.

Implémente

Exceptions

name a la valeur null.

Exemples

L’exemple suivant affiche tous les membres de la String classe qui commencent par la lettre C.

using namespace System;
using namespace System::Security;
using namespace System::Reflection;

// forward declarations:
void GetMemberInfo();
void GetPublicStaticMemberInfo();
void GetPublicInstanceMethodMemberInfo();
int main()
{
   try
   {
      GetMemberInfo();
      GetPublicStaticMemberInfo();
      GetPublicInstanceMethodMemberInfo();
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
   catch ( NotSupportedException^ e ) 
   {
      Console::WriteLine( "NotSupportedException occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
   catch ( SecurityException^ e ) 
   {
      Console::WriteLine( "SecurityException occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception occurred." );
      Console::WriteLine( "Source: {0}", e->Source );
      Console::WriteLine( "Message: {0}", e->Message );
   }

}

void GetMemberInfo()
{
   String^ myString = "GetMember_String";
   Type^ myType = myString->GetType();
   
   // Get the members for myString starting with the letter C.
   array<MemberInfo^>^myMembers = myType->GetMember( "C*" );
   if ( myMembers->Length > 0 )
   {
      Console::WriteLine( "\nThe member(s) starting with the letter C for type {0}:", myType );
      for ( int index = 0; index < myMembers->Length; index++ )
         Console::WriteLine( "Member {0}: {1}", index + 1, myMembers[ index ] );
   }
   else
      Console::WriteLine( "No members match the search criteria." );
}

using System;
using System.Security;
using System.Reflection;

public class MyMemberSample
{
    public static void Main()
    {
        MyMemberSample myClass = new MyMemberSample();
        try
        {
            myClass.GetMemberInfo();
            myClass.GetPublicStaticMemberInfo();	
            myClass.GetPublicInstanceMethodMemberInfo();	
        }
        catch(ArgumentNullException e)
        {
            Console.WriteLine("ArgumentNullException occurred.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
        catch(NotSupportedException e)
        {
            Console.WriteLine("NotSupportedException occurred.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
        catch(SecurityException e)
        {
            Console.WriteLine("SecurityException occurred.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
        catch(Exception e)
        {
            Console.WriteLine("Exception occurred.");
            Console.WriteLine("Source: " + e.Source);
            Console.WriteLine("Message: " + e.Message);
        }
    }

    public void GetMemberInfo()
    {
        String myString = "GetMember_String";

        Type myType = myString.GetType();
        // Get the members for myString starting with the letter C.
        MemberInfo[] myMembers = myType.GetMember("C*");
        if(myMembers.Length > 0)
        {
            Console.WriteLine("\nThe member(s) starting with the letter C for type {0}:", myType);
            for(int index=0; index < myMembers.Length; index++)
                Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
        }
        else
        {
            Console.WriteLine("No members match the search criteria.");
        }
    }

Imports System.Security
Imports System.Reflection

Public Class MyMemberSample

    Public Shared Sub Main()
        Dim [myClass] As New MyMemberSample()
        Try
            [myClass].GetMemberInfo()
            [myClass].GetPublicStaticMemberInfo()
            [myClass].GetPublicInstanceMethodMemberInfo()
        Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException occurred.")
            Console.WriteLine(("Source: " + e.Source))
            Console.WriteLine(("Message: " + e.Message))
        Catch e As NotSupportedException
            Console.WriteLine("NotSupportedException occurred.")
            Console.WriteLine(("Source: " + e.Source))
            Console.WriteLine(("Message: " + e.Message))
        Catch e As SecurityException
            Console.WriteLine("SecurityException occurred.")
            Console.WriteLine(("Source: " + e.Source))
            Console.WriteLine(("Message: " + e.Message))
        Catch e As Exception
            Console.WriteLine("Exception occurred.")
            Console.WriteLine(("Source: " + e.Source))
            Console.WriteLine(("Message: " + e.Message))
        End Try
    End Sub


    Public Sub GetMemberInfo()
        Dim myString As [String] = "GetMember_String"
        Dim myType As Type = myString.GetType()
        ' Get the members for myString starting with the letter C.
        Dim myMembers As MemberInfo() = myType.GetMember("C*")
        If myMembers.Length > 0 Then
            Console.WriteLine(ControlChars.Cr + "The member(s) starting with the letter C for type {0}:", myType)
            Dim index As Integer
            For index = 0 To myMembers.Length - 1
                Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
            Next index
        Else
            Console.WriteLine("No members match the search criteria.")
        End If
    End Sub

Remarques

La recherche de name respecte la casse. La recherche comprend des membres publics statiques et d’instance publics.

Les membres incluent des propriétés, des méthodes, des champs, des événements, etc.

La GetMember méthode ne retourne pas de membres dans un ordre particulier, par exemple par ordre alphabétique ou par ordre de déclaration. Votre code ne doit pas dépendre de l’ordre dans lequel les membres sont retournés, car cet ordre varie.

Cette surcharge de méthode ne trouvera pas d’initialiseurs de classe (constructeur statique). pour rechercher des initialiseurs de classe, utilisez une surcharge qui accepte BindingFlags et spécifiez BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or BindingFlags.NonPublic dans Visual Basic). Vous pouvez également récupérer l’initialiseur de classe à l’aide de la TypeInitializer propriété.

Le tableau suivant indique les membres d’une classe de base qui sont retournés par les 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 masqué par nom-et-signature.
Événement Non 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é. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.
Méthode Non Oui. Une méthode (à la fois virtuelles et non virtuelles) peut être masquée ou masquée-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 le même que celui des méthodes qui implémentent la propriété. La réflexion traite les propriétés comme étant masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.
  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. 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 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.

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

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

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 les membres de Object s’il n’y a aucune contrainte de classe.

Notes

Pour les méthodes génériques, n’incluez pas les arguments de type dans name . Par exemple, le code C# GetMember("MyMethod<int>") recherche un membre avec le nom de texte « MyMethod<int> », plutôt que pour une méthode nommée MyMethod qui a un argument générique de type int .

Voir aussi

S’applique à

GetMember(String, BindingFlags)

Recherche les membres spécifiés, à l'aide des contraintes de liaison spécifiées.

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember (string name, System.Reflection.BindingFlags bindingAttr);
abstract member GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public Overridable Function GetMember (name As String, bindingAttr As BindingFlags) As MemberInfo()

Paramètres

name
String

Chaîne contenant le nom des membres à 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 un tableau vide.

Retours

MemberInfo[]

Tableau d'objets MemberInfo représentant les membres publics portant le nom spécifié, si ces objets sont trouvés ; sinon, un tableau vide.

Implémente

Exceptions

name a la valeur null.

Exemples

L’exemple suivant affiche tous les membres statiques publics de la myString classe qui commencent par la lettre C.

void GetPublicStaticMemberInfo()
{
   String^ myString = "GetMember_String_BindingFlag";
   Type^ myType = myString->GetType();
   
   // Get the public static members for the class myString starting with the letter C
   array<MemberInfo^>^myMembers = myType->GetMember( "C*", static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Static) );
   if ( myMembers->Length > 0 )
   {
      Console::WriteLine( "\nThe public static member(s) starting with the letter C for type {0}:", myType );
      for ( int index = 0; index < myMembers->Length; index++ )
         Console::WriteLine( "Member {0}: {1}", index + 1, myMembers[ index ] );
   }
   else
      Console::WriteLine( "No members match the search criteria." );
}
public void GetPublicStaticMemberInfo()
{
    String myString = "GetMember_String_BindingFlag";
    Type myType = myString.GetType();
    // Get the public static members for the class myString starting with the letter C.
    MemberInfo[] myMembers = myType.GetMember("C*",
        BindingFlags.Public |BindingFlags.Static);
    if(myMembers.Length > 0)
    {
        Console.WriteLine("\nThe public static member(s) starting with the letter C for type {0}:", myType);
        for(int index=0; index < myMembers.Length; index++)
            Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
    }
    else
    {
        Console.WriteLine("No members match the search criteria.");
    }
}
Public Sub GetPublicStaticMemberInfo()
    Dim myString As [String] = "GetMember_String_BindingFlag"

    Dim myType As Type = myString.GetType()
    ' Get the public static members for the class myString starting with the letter C.
    Dim myMembers As MemberInfo() = myType.GetMember("C*", BindingFlags.Public Or BindingFlags.Static)

    If myMembers.Length > 0 Then
        Console.WriteLine(ControlChars.Cr + "The public static member(s) starting with the letter C for type {0}:", myType)
        Dim index As Integer
        For index = 0 To myMembers.Length - 1
            Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
        Next index
    Else
        Console.WriteLine("No members match the search criteria.")
    End If
End Sub

Remarques

Cette méthode peut être substituée par une classe dérivée.

Les membres incluent des propriétés, des méthodes, des champs, des événements, etc.

La GetMember méthode ne retourne pas de membres dans un ordre particulier, par exemple par ordre alphabétique ou par ordre de déclaration. Votre code ne doit pas dépendre de l’ordre dans lequel les membres sont retournés, car cet ordre varie.

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

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

  • Spécifiez BindingFlags.Public pour inclure les membres publics dans la recherche.

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

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

BindingFlagsVous pouvez utiliser les indicateurs de modificateur suivants pour modifier le fonctionnement de la recherche :

  • BindingFlags.IgnoreCase pour ignorer la casse de name .

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

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

pour obtenir l’initialiseur de classe (constructeur statique) à l’aide de cette surcharge de méthode, vous devez spécifier « constructeur statique » pour name , et BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or BindingFlags.NonPublic dans Visual Basic) pour bindingAttr . Vous pouvez également récupérer l’initialiseur de classe à l’aide de la TypeInitializer propriété.

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

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 les membres de Object s’il n’y a aucune contrainte de classe.

Notes

Pour les méthodes génériques, n’incluez pas les arguments de type dans name . Par exemple, le code C# GetMember("MyMethod<int>") recherche un membre avec le nom de texte « MyMethod<int> », plutôt que pour une méthode nommée MyMethod qui a un argument générique de type int .

Voir aussi

S’applique à

GetMember(String, MemberTypes, BindingFlags)

Recherche les membres spécifiés du type de membre spécifié, à l’aide des contraintes de liaison spécifiées.

public:
 virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name, System::Reflection::MemberTypes type, System::Reflection::BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember (string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);
abstract member GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
Public Overridable Function GetMember (name As String, type As MemberTypes, bindingAttr As BindingFlags) As MemberInfo()

Paramètres

name
String

Chaîne contenant le nom des membres à obtenir.

type
MemberTypes

La valeur à rechercher.

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 un tableau vide.

Retours

MemberInfo[]

Tableau d'objets MemberInfo représentant les membres publics portant le nom spécifié, si ces objets sont trouvés ; sinon, un tableau vide.

Implémente

Exceptions

name a la valeur null.

Une classe dérivée doit fournir une implémentation.

Exemples

L’exemple suivant affiche toutes les méthodes de la myString classe qui commencent par la lettre C.

void GetPublicInstanceMethodMemberInfo()
{
   String^ myString = "GetMember_String_MemberType_BindingFlag";
   Type^ myType = myString->GetType();
   
   // Get the public instance methods for myString starting with the letter C.
   array<MemberInfo^>^myMembers = myType->GetMember( "C*", MemberTypes::Method, static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) );
   if ( myMembers->Length > 0 )
   {
      Console::WriteLine( "\nThe public instance method(s) starting with the letter C for type {0}:", myType );
      for ( int index = 0; index < myMembers->Length; index++ )
         Console::WriteLine( "Member {0}: {1}", index + 1, myMembers[ index ] );
   }
   else
      Console::WriteLine( "No members match the search criteria." );
}
    public void GetPublicInstanceMethodMemberInfo()
    {
        String myString = "GetMember_String_MemberType_BindingFlag";
        Type myType = myString.GetType();
        // Get the public instance methods for myString starting with the letter C.
        MemberInfo[] myMembers = myType.GetMember("C*", MemberTypes.Method,
            BindingFlags.Public | BindingFlags.Instance);
        if(myMembers.Length > 0)
        {
            Console.WriteLine("\nThe public instance method(s) starting with the letter C for type {0}:", myType);
            for(int index=0; index < myMembers.Length; index++)
                Console.WriteLine("Member {0}: {1}", index + 1, myMembers[index].ToString());
        }
        else
        {
            Console.WriteLine("No members match the search criteria.");
        }
    }
}
    Public Sub GetPublicInstanceMethodMemberInfo()
        Dim myString As [String] = "GetMember_String_MemberType_BindingFlag"

        Dim myType As Type = myString.GetType()
        ' Get the public instance methods for myString starting with the letter C.
        Dim myMembers As MemberInfo() = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public Or BindingFlags.Instance)
        If myMembers.Length > 0 Then
            Console.WriteLine(ControlChars.Cr + "The public instance method(s) starting with the letter C for type {0}:", myType)
            Dim index As Integer
            For index = 0 To myMembers.Length - 1
                Console.WriteLine("Member {0}: {1}", index + 1, myMembers(index).ToString())
            Next index
        Else
            Console.WriteLine("No members match the search criteria.")
        End If
    End Sub
End Class

Remarques

Les membres incluent des propriétés, des méthodes, des champs, des événements, etc.

La GetMember méthode ne retourne pas de membres dans un ordre particulier, par exemple par ordre alphabétique ou par ordre de déclaration. Votre code ne doit pas dépendre de l’ordre dans lequel les membres sont retournés, car cet ordre varie.

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

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

  • Spécifiez BindingFlags.Public pour inclure les membres publics dans la recherche.

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

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

BindingFlagsVous pouvez utiliser les indicateurs de modificateur suivants pour modifier le fonctionnement de la recherche :

  • BindingFlags.IgnoreCase pour ignorer la casse de name .

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

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

pour obtenir l’initialiseur de classe (constructeur statique) à l’aide de cette surcharge de méthode, vous devez spécifier « constructeur statique » pour name , MemberTypes.Constructor pour type et BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or BindingFlags.NonPublic dans Visual Basic) pour bindingAttr . Vous pouvez également récupérer l’initialiseur de classe à l’aide de la TypeInitializer propriété.

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

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 les membres de Object s’il n’y a aucune contrainte de classe.

Notes

Pour les méthodes génériques, n’incluez pas les arguments de type dans name . Par exemple, le code C# GetMember("MyMethod<int>") recherche un membre avec le nom de texte « MyMethod<int> », plutôt que pour une méthode nommée MyMethod qui a un argument générique de type int .

Voir aussi

S’applique à