Méthode Type.GetMember (String)

Recherche les membres avec le nom spécifié.

Overloads Public Function GetMember( _
   ByVal name As String _) As MemberInfo()[C#]
public MemberInfo[] GetMember(stringname);[C++]
public: MemberInfo* GetMember(String* name) [];[JScript]
public function GetMember(
   name : String) : MemberInfo[];

Paramètres

name
String contenant le nom des membres publics à obtenir.

Valeur de retour

Tableau d'objets MemberInfo représentant les membres publics dont le nom est spécifié, si ces objets sont trouvés ; sinon, une référence null (Nothing dans Visual Basic).

Exceptions

Type d'exception Condition
ArgumentNullException name est une référence null (Nothing dans Visual Basic).

Notes

La recherche de name respecte la casse.

Parmi les membres figurent des propriétés, méthodes, champs, événements, etc.

Cette méthode effectue la recherche dans la classe en cours et ses classes de base. Seules les méthodes publiques peuvent être trouvées à l'aide de cette méthode. Si le type demandé est non public et si l'appelant ne possède pas de ReflectionPermission pour réfléchir les objets non publics en dehors de l'assembly en cours, cette méthode retourne alors une référence null (Nothing dans Visual Basic).

Les initialiseurs de classe sont disponibles par l'intermédiaire de GetMember, GetMembers, FindMembers et GetConstructors.

Le tableau suivant indique les membres d'une classe de base qui sont retournés par les méthodes Get 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 du 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 masquées-par-nom-et-signature. Voir la remarque 2 ci-dessous.
Méthode Non Oui. Une méthode (à la fois virtuelle et non virtuelle) peut être masquée par nom ou masquée-par-nom-et-signature.
De type imbriqué Non Non
Propriété Non applicable La règle du 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 masquées-par-nom-et-signature. Voir la remarque 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ètre, les sentinelles et les conventions d'appel non managées. Ceci est une comparaison binaire.
  2. Pour la réflexion, les propriétés et événements sont masqués-par-nom-et-signature. Si une propriété a un accesseur get et set dans la classe de base, mais si la classe dérivée n'a qu'un accesseur get, la propriété de la classe dérivée masque la propriété de la classe de base et vous ne pourrez pas accéder à l'accesseur Set sur la classe de base.
  3. Les attributs personnalisés ne font pas partie du système de type commun.

Exemple

[Visual Basic, C#, C++] L'exemple suivant affiche tous les membres de la classe String dont le nom commence par la lettre C.

 

Imports System
Imports System.Security
Imports System.Reflection
Imports Microsoft.VisualBasic

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 'Main


    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 'GetMemberInfo

[C#] 

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

[C++] 

#using <mscorlib.dll>

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(S"ArgumentNullException occurred.");
      Console::WriteLine(S"Source: {0}", e->Source);
      Console::WriteLine(S"Message: {0}", e->Message);
   } catch (NotSupportedException* e) {
      Console::WriteLine(S"NotSupportedException occurred.");
      Console::WriteLine(S"Source: {0}", e->Source);
      Console::WriteLine(S"Message: {0}", e->Message);
   } catch (SecurityException* e) {
      Console::WriteLine(S"SecurityException occurred.");
      Console::WriteLine(S"Source: {0}", e->Source);
      Console::WriteLine(S"Message: {0}", e->Message);
   } catch (Exception* e) {
      Console::WriteLine(S"Exception occurred.");
      Console::WriteLine(S"Source: {0}", e->Source);
      Console::WriteLine(S"Message: {0}", e->Message);
   }
}

void GetMemberInfo() {
   String*  myString = S"GetMember_String";

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

[JScript] Aucun exemple n'est disponible pour JScript. Pour afficher un exemple Visual Basic, C# ou C++, cliquez sur le bouton Filtre de langage Filtre de langage dans le coin supérieur gauche de la page.

Configuration requise

Plates-formes : Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Édition familiale, Windows XP Professionnel, Famille Windows Server 2003, .NET Compact Framework, Norme Common Language Infrastructure (CLI)

Sécurité du .NET Framework : 

Voir aussi

Classe Type | Membres Type | Espace de noms System | Liste de surcharge Type.GetMember | MemberInfo | String | DefaultBinder | ReflectionPermission | GetMembers | GetDefaultMembers | FindMembers

Afficher:
© 2014 Microsoft