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 Typefichier actif .
Surcharges
| Nom | Description |
|---|---|
| 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)
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
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);
[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[] GetMember(string name);
public System.Reflection.MemberInfo[] GetMember(string name);
[<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.GetMember : string -> System.Reflection.MemberInfo[]
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é, s’il est trouvé ; sinon, un tableau vide.
Implémente
- Attributs
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 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.");
}
}
open System
open System.Security
open System.Reflection
type MyMemberSample() =
member _.GetMemberInfo() =
let myString = "GetMember_String"
let myType = myString.GetType()
// Get the members for myString starting with the letter C.
let myMembers = myType.GetMember "C*"
if myMembers.Length > 0 then
printfn $"\nThe member(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
member _.GetPublicStaticMemberInfo() =
let myString = "GetMember_String_BindingFlag"
let myType = myString.GetType()
// Get the public static members for the class myString starting with the letter C.
let myMembers = myType.GetMember("C*", BindingFlags.Public ||| BindingFlags.Static)
if myMembers.Length > 0 then
printfn $"\nThe public static member(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
member _.GetPublicInstanceMethodMemberInfo() =
let myString = "GetMember_String_MemberType_BindingFlag"
let myType = myString.GetType()
// Get the public instance methods for myString starting with the letter C.
let myMembers = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public ||| BindingFlags.Instance)
if myMembers.Length > 0 then
printfn $"\nThe public instance method(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "No members match the search criteria."
let myClass = MyMemberSample()
try
myClass.GetMemberInfo()
myClass.GetPublicStaticMemberInfo()
myClass.GetPublicInstanceMethodMemberInfo()
with
| :? ArgumentNullException as e ->
printfn "ArgumentNullException occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
| :? NotSupportedException as e ->
printfn $"NotSupportedException occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
| :? SecurityException as e ->
printfn "SecurityException occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
| e ->
printfn "Exception occurred."
printfn $"Source: {e.Source}"
printfn $"Message: {e.Message}"
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 inclut des membres d’instance statiques et publiques publics.
Les membres incluent des propriétés, des méthodes, des champs, des événements, et ainsi de suite.
Dans .NET 6 et versions antérieures, la GetMember 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 ne trouve pas d’initialiseurs de classe (constructeur statique). Pour rechercher des initialiseurs de classe, utilisez une surcharge qui accepte BindingFlagset spécifiez | BindingFlags.NonPublicBindingFlags.Static(BindingFlags.StaticOrBindingFlags.NonPublic en 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. |
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.
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.
Les attributs personnalisés ne font pas partie du système de type commun.
Si le type actuel Type représente un type générique construit, cette méthode retourne 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.
Note
Pour les méthodes génériques, n’incluez pas les arguments de type dans name. Par exemple, le code GetMember("MyMethod<int>") C# 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)
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
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);
[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 virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.BindingFlags bindingAttr);
public virtual System.Reflection.MemberInfo[] GetMember(string name, 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 GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
abstract member GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
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 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 MemberInfo représentant les membres publics portant le nom spécifié, s’il est trouvé ; sinon, un tableau vide.
Implémente
- Attributs
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.
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.");
}
}
member _.GetPublicStaticMemberInfo() =
let myString = "GetMember_String_BindingFlag"
let myType = myString.GetType()
// Get the public static members for the class myString starting with the letter C.
let myMembers = myType.GetMember("C*", BindingFlags.Public ||| BindingFlags.Static)
if myMembers.Length > 0 then
printfn $"\nThe public static member(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "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, et ainsi de suite.
Dans .NET 6 et versions antérieures, la GetMember 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.
Les indicateurs de filtre suivants BindingFlags peuvent être utilisés pour définir les membres à inclure dans la recherche :
Vous devez spécifier soit
BindingFlags.InstancesoitBindingFlags.Staticpour obtenir un retour.Spécifiez
BindingFlags.Publicd’inclure des membres publics dans la recherche.Spécifiez
BindingFlags.NonPublicd’inclure des membres non publics (c’est-à-dire des membres privés, internes et protégés) dans la recherche.Spécifiez
BindingFlags.FlattenHierarchypour inclurepublicetprotectedles membres statiques de la hiérarchie ; les membres statiques des classes héritéesprivatene sont pas inclus.
Les indicateurs de modification suivants BindingFlags peuvent être utilisés pour modifier le fonctionnement de la recherche :
BindingFlags.IgnoreCasepour ignorer le cas dename.BindingFlags.DeclaredOnlypour 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.
Pour obtenir l’initialiseur de classe (constructeur statique) à l’aide de cette surcharge de méthode, vous devez spécifier « constructeur statique » pour nameet BindingFlags.Static | BindingFlags.NonPublic (OrBindingFlags.StaticBindingFlags.NonPublic en Visual Basic) pour .bindingAttr Vous pouvez également obtenir l’initialiseur de classe à l’aide de la TypeInitializer propriété.
Si le type actuel Type représente un type générique construit, cette méthode retourne 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.
Note
Pour les méthodes génériques, n’incluez pas les arguments de type dans name. Par exemple, le code GetMember("MyMethod<int>") C# 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)
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
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);
[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 virtual System.Reflection.MemberInfo[] GetMember(string name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
public virtual System.Reflection.MemberInfo[] GetMember(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);
[<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 GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
override this.GetMember : string * System.Reflection.MemberTypes * System.Reflection.BindingFlags -> System.Reflection.MemberInfo[]
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
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[]
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
Valeur à rechercher.
- 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 MemberInfo représentant les membres publics portant le nom spécifié, s’il est trouvé ; sinon, un tableau vide.
Implémente
- Attributs
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.
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.");
}
}
}
member _.GetPublicInstanceMethodMemberInfo() =
let myString = "GetMember_String_MemberType_BindingFlag"
let myType = myString.GetType()
// Get the public instance methods for myString starting with the letter C.
let myMembers = myType.GetMember("C*", MemberTypes.Method, BindingFlags.Public ||| BindingFlags.Instance)
if myMembers.Length > 0 then
printfn $"\nThe public instance method(s) starting with the letter C for type {myType}:"
for index = 0 to myMembers.Length - 1 do
printfn $"Member {index + 1}: {myMembers[index]}"
else
printfn "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, et ainsi de suite.
Dans .NET 6 et versions antérieures, la GetMember 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.
Les indicateurs de filtre suivants BindingFlags peuvent être utilisés pour définir les membres à inclure dans la recherche :
Vous devez spécifier soit
BindingFlags.InstancesoitBindingFlags.Staticpour obtenir un retour.Spécifiez
BindingFlags.Publicd’inclure des membres publics dans la recherche.Spécifiez
BindingFlags.NonPublicd’inclure des membres non publics (c’est-à-dire des membres privés, internes et protégés) dans la recherche.Spécifiez
BindingFlags.FlattenHierarchypour inclurepublicetprotectedles membres statiques de la hiérarchie ; les membres statiques des classes héritéesprivatene sont pas inclus.
Les indicateurs de modification suivants BindingFlags peuvent être utilisés pour modifier le fonctionnement de la recherche :
BindingFlags.IgnoreCasepour ignorer le cas dename.BindingFlags.DeclaredOnlypour 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.
Pour obtenir l’initialiseur de classe (constructeur statique) à l’aide de cette surcharge de méthode, vous devez spécifier « constructeur statique » pour , MemberTypes.Constructor pour nametypeet BindingFlags.Static | BindingFlags.NonPublic (OrBindingFlags.StaticBindingFlags.NonPublic en Visual Basic) pour .bindingAttr Vous pouvez également obtenir l’initialiseur de classe à l’aide de la TypeInitializer propriété.
Si le type actuel Type représente un type générique construit, cette méthode retourne 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.
Note
Pour les méthodes génériques, n’incluez pas les arguments de type dans name. Par exemple, le code GetMember("MyMethod<int>") C# 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)