Type.GetMember Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee worden de opgegeven leden van de huidige Type.
Overloads
| Name | Description |
|---|---|
| GetMember(String) |
Hiermee wordt gezocht naar de openbare leden met de opgegeven naam. |
| GetMember(String, BindingFlags) |
Hiermee wordt gezocht naar de opgegeven leden met behulp van de opgegeven bindingsbeperkingen. |
| GetMember(String, MemberTypes, BindingFlags) |
Zoekt naar de opgegeven leden van het opgegeven lidtype, met behulp van de opgegeven bindingsbeperkingen. |
GetMember(String)
Hiermee wordt gezocht naar de openbare leden met de opgegeven naam.
public:
virtual cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public:
cli::array <System::Reflection::MemberInfo ^> ^ GetMember(System::String ^ name);
public System.Reflection.MemberInfo[] GetMember(string name);
abstract member GetMember : string -> System.Reflection.MemberInfo[]
override this.GetMember : string -> System.Reflection.MemberInfo[]
member this.GetMember : string -> System.Reflection.MemberInfo[]
Public Function GetMember (name As String) As MemberInfo()
Parameters
- name
- String
De tekenreeks met de naam van de openbare leden die u wilt ophalen.
Retouren
Een matrix met MemberInfo objecten die de openbare leden vertegenwoordigen met de opgegeven naam, indien gevonden; anders een lege matrix.
Implementeringen
Uitzonderingen
name is null.
Voorbeelden
In het volgende voorbeeld worden alle leden van de String klasse weergegeven die beginnen met de letter 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
Opmerkingen
De zoekopdracht name is hoofdlettergevoelig. De zoekopdracht bevat leden van openbare statische en openbare instanties.
Leden bevatten eigenschappen, methoden, velden, gebeurtenissen, enzovoort.
In .NET 6 en eerdere versies retourneert de methode GetMember geen leden in een bepaalde volgorde, zoals alfabetische of declaratievolgorde. Uw code mag niet afhankelijk zijn van de volgorde waarin leden worden geretourneerd, omdat die volgorde varieert. Vanaf .NET 7 is de volgorde echter deterministisch op basis van de volgorde van metagegevens in de assembly.
Deze overbelasting van de methode vindt geen klasse-initializers (statische constructor). Als u klasse-initializers wilt vinden, gebruikt u een overbelasting die BindingFlags gebruikt en geeft u BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic). U kunt de klasse-initializer ook ophalen met behulp van de TypeInitializer eigenschap.
In de volgende tabel ziet u welke leden van een basisklasse worden geretourneerd door de Get methoden bij het weergeven van een type.
| Lidmaatschapssoort | Static | Niet-statisch |
|---|---|---|
| Constructeur | No | No |
| Veld | No | Ja. Een veld wordt altijd verborgen op basis van naam en kenmerk. |
| Event | Niet van toepassing | De algemene regels van het type-systeem zijn dat de overerving hetzelfde is als die van de methoden die de eigenschap implementeren. Weerspiegeling behandelt eigenschappen als hide-by-name-and-signature. Zie opmerking 2 hieronder. |
| Methode | No | Ja. Een methode (zowel virtueel als niet-virtueel) kan worden verborgen op basis van naam of op basis van naam en handtekening. |
| Geneste type | No | No |
| Property | Niet van toepassing | De algemene regels van het type-systeem zijn dat de overerving hetzelfde is als die van de methoden die de eigenschap implementeren. Weerspiegeling behandelt eigenschappen als hide-by-name-and-signature. Zie opmerking 2 hieronder. |
Hide-by-name-and-signature beschouwt alle onderdelen van de handtekening, waaronder aangepaste modifiers, retourtypen, parametertypen, sentinels en onbeheerde aanroepconventies. Dit is een binaire vergelijking.
Voor reflectie worden eigenschappen en gebeurtenissen verborgen op basis van naam en signatuur. Als u een eigenschap hebt met zowel een get als een set accessor in de basisklasse, maar de afgeleide klasse alleen een get-accessor heeft, verbergt de eigenschap afgeleide klasse de eigenschap basisklasse en hebt u geen toegang tot de setter op de basisklasse.
Aangepaste kenmerken maken geen deel uit van het algemene typesysteem.
Als de huidige Type een geconstrueerd generiek type vertegenwoordigt, retourneert deze methode de MemberInfo met typeparameters vervangen door de geschikte typeargumenten.
Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, doorzoekt deze methode de leden van de klassebeperking of de leden van Object als er geen klassebeperking is.
Note
Voor algemene methoden moet u de typeargumenten niet opnemen in name. Met de C#-code GetMember("MyMethod<int>") wordt bijvoorbeeld gezocht naar een lid met de tekstnaam 'MyMethod<int>', in plaats van een methode met een naam MyMethod die één algemeen argument van het type intheeft.
Zie ook
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Van toepassing op
GetMember(String, BindingFlags)
Hiermee wordt gezocht naar de opgegeven leden met behulp van de opgegeven bindingsbeperkingen.
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()
Parameters
- name
- String
De tekenreeks met de naam van de leden die u wilt ophalen.
- bindingAttr
- BindingFlags
Een bitsgewijze combinatie van de opsommingswaarden die aangeven hoe de zoekopdracht wordt uitgevoerd.
– of –
Default om een lege matrix te retourneren.
Retouren
Een matrix met MemberInfo objecten die de openbare leden vertegenwoordigen met de opgegeven naam, indien gevonden; anders een lege matrix.
Implementeringen
Uitzonderingen
name is null.
Voorbeelden
In het volgende voorbeeld worden alle openbare statische leden van de myString klasse weergegeven die beginnen met de letter 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
Opmerkingen
Deze methode kan worden overschreven door een afgeleide klasse.
Leden bevatten eigenschappen, methoden, velden, gebeurtenissen, enzovoort.
In .NET 6 en eerdere versies retourneert de methode GetMember geen leden in een bepaalde volgorde, zoals alfabetische of declaratievolgorde. Uw code mag niet afhankelijk zijn van de volgorde waarin leden worden geretourneerd, omdat die volgorde varieert. Vanaf .NET 7 is de volgorde echter deterministisch op basis van de volgorde van metagegevens in de assembly.
De volgende BindingFlags filtervlagmen kunnen worden gebruikt om te definiëren welke leden moeten worden opgenomen in de zoekopdracht:
U moet of
BindingFlags.InstanceofBindingFlags.Staticopgeven om een retour te krijgen.Geef
BindingFlags.Publicop dat openbare leden moeten worden opgenomen in de zoekopdracht.Geef
BindingFlags.NonPublicop dat u niet-openbare leden (dat wil gezegd privé-, interne en beveiligde leden) wilt opnemen in de zoekopdracht.Geef
BindingFlags.FlattenHierarchyop dat u statische leden wilt opnemenpublicinprotectedde hiërarchie.privateStatische leden in overgenomen klassen zijn niet opgenomen.
De volgende BindingFlags wijzigingsvlagmen kunnen worden gebruikt om de werking van de zoekopdracht te wijzigen:
BindingFlags.IgnoreCaseom de hoofdlettergevoeligheid vannamete negeren.BindingFlags.DeclaredOnlyom alleen de leden te doorzoeken die zijn gedeclareerd op de Typeleden die gewoon zijn overgenomen.
Zie System.Reflection.BindingFlags voor meer informatie.
Als u de klasse-initializer (statische constructor) wilt ophalen met deze overbelasting van de methode, moet u 'statische constructor' opgeven voor name en BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic) voor bindingAttr. U kunt de klasse-initializer ook ophalen met behulp van de TypeInitializer eigenschap.
Als de huidige Type een geconstrueerd generiek type vertegenwoordigt, retourneert deze methode de MemberInfo met typeparameters vervangen door de geschikte typeargumenten.
Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, doorzoekt deze methode de leden van de klassebeperking of de leden van Object als er geen klassebeperking is.
Note
Voor algemene methoden moet u de typeargumenten niet opnemen in name. Met de C#-code GetMember("MyMethod<int>") wordt bijvoorbeeld gezocht naar een lid met de tekstnaam 'MyMethod<int>', in plaats van een methode met een naam MyMethod die één algemeen argument van het type intheeft.
Zie ook
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Van toepassing op
GetMember(String, MemberTypes, BindingFlags)
Zoekt naar de opgegeven leden van het opgegeven lidtype, met behulp van de opgegeven bindingsbeperkingen.
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()
Parameters
- name
- String
De tekenreeks met de naam van de leden die u wilt ophalen.
- type
- MemberTypes
De waarde die moet worden gezocht.
- bindingAttr
- BindingFlags
Een bitsgewijze combinatie van de opsommingswaarden die aangeven hoe de zoekopdracht wordt uitgevoerd.
– of –
Default om een lege matrix te retourneren.
Retouren
Een matrix met MemberInfo objecten die de openbare leden vertegenwoordigen met de opgegeven naam, indien gevonden; anders een lege matrix.
Implementeringen
Uitzonderingen
name is null.
Een afgeleide klasse moet een implementatie bieden.
Voorbeelden
In het volgende voorbeeld worden alle methoden van de myString klasse weergegeven die beginnen met de letter 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
Opmerkingen
Leden bevatten eigenschappen, methoden, velden, gebeurtenissen, enzovoort.
In .NET 6 en eerdere versies retourneert de methode GetMember geen leden in een bepaalde volgorde, zoals alfabetische of declaratievolgorde. Uw code mag niet afhankelijk zijn van de volgorde waarin leden worden geretourneerd, omdat die volgorde varieert. Vanaf .NET 7 is de volgorde echter deterministisch op basis van de volgorde van metagegevens in de assembly.
De volgende BindingFlags filtervlagmen kunnen worden gebruikt om te definiëren welke leden moeten worden opgenomen in de zoekopdracht:
U moet of
BindingFlags.InstanceofBindingFlags.Staticopgeven om een retour te krijgen.Geef
BindingFlags.Publicop dat openbare leden moeten worden opgenomen in de zoekopdracht.Geef
BindingFlags.NonPublicop dat u niet-openbare leden (dat wil gezegd privé-, interne en beveiligde leden) wilt opnemen in de zoekopdracht.Geef
BindingFlags.FlattenHierarchyop dat u statische leden wilt opnemenpublicinprotectedde hiërarchie.privateStatische leden in overgenomen klassen zijn niet opgenomen.
De volgende BindingFlags wijzigingsvlagmen kunnen worden gebruikt om de werking van de zoekopdracht te wijzigen:
BindingFlags.IgnoreCaseom de hoofdlettergevoeligheid vannamete negeren.BindingFlags.DeclaredOnlyom alleen de leden te doorzoeken die zijn gedeclareerd op de Typeleden die gewoon zijn overgenomen.
Zie System.Reflection.BindingFlags voor meer informatie.
Als u de klasse-initializer (statische constructor) wilt ophalen met deze overbelasting van de methode, moet u 'statische constructor' opgeven voor name, MemberTypes.Constructor voor type en BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic in Visual Basic) voor bindingAttr. U kunt de klasse-initializer ook ophalen met behulp van de TypeInitializer eigenschap.
Als de huidige Type een geconstrueerd generiek type vertegenwoordigt, retourneert deze methode de MemberInfo met typeparameters vervangen door de geschikte typeargumenten.
Als de huidige Type een typeparameter vertegenwoordigt in de definitie van een algemeen type of algemene methode, doorzoekt deze methode de leden van de klassebeperking of de leden van Object als er geen klassebeperking is.
Note
Voor algemene methoden moet u de typeargumenten niet opnemen in name. Met de C#-code GetMember("MyMethod<int>") wordt bijvoorbeeld gezocht naar een lid met de tekstnaam 'MyMethod<int>', in plaats van een methode met een naam MyMethod die één algemeen argument van het type intheeft.
Zie ook
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)