Type.GetMember Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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. |
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.
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.
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
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
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
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
ouBindingFlags.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 inclurepublic
et ajouterprotected
des membres statiquesprivate
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 dename
.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
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
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
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
ouBindingFlags.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 inclurepublic
et ajouterprotected
des membres statiquesprivate
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 dename
.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
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)