Type.GetMember Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft die angegebenen Member des aktuellen Type ab.
Überlädt
GetMember(String) |
Sucht die öffentlichen Member mit dem angegebenen Namen. |
GetMember(String, BindingFlags) |
Sucht die angegebenen Member unter Verwendung der angegebenen Bindungseinschränkungen. |
GetMember(String, MemberTypes, BindingFlags) |
Sucht die angegebenen Member des angegebenen Membertyps unter Verwendung der angegebenen Bindungseinschränkungen. |
GetMember(String)
Sucht die öffentlichen Member mit dem angegebenen Namen.
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()
Parameter
- name
- String
Die Zeichenfolge, die den Namen des abzurufenden öffentlichen Members enthält.
Gibt zurück
Ein Array von MemberInfo-Objekten, die die öffentlichen Member mit dem angegebenen Namen darstellen, sofern gefunden, andernfalls ein leeres Array.
Implementiert
Ausnahmen
name
ist null
.
Beispiele
Im folgenden Beispiel werden alle Member der -Klasse String
angezeigt, die mit dem Buchstaben C beginnen.
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
Hinweise
Bei der Suche nach name
wird die Kleinschreibung beachtet. Die Suche umfasst öffentliche statische und öffentliche Instanzmitglieder.
Zu den Membern gehören Eigenschaften, Methoden, Felder, Ereignisse und so weiter.
Die -Methode gibt Keine Elemente in einer bestimmten Reihenfolge zurück, z. B. GetMember alphabetisch oder Deklarations reihenfolge. Ihr Code darf nicht von der Reihenfolge abhängen, in der Member zurückgegeben werden, da diese Reihenfolge variiert.
Diese Methodenüberladung findet keine Klasseninitialisierer (statischer Konstruktor). Verwenden Sie zum Suchen von Klasseninitialisierern eine Überladung, die verwendet, und BindingFlags geben Sie | ( in BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic). Sie können den Klasseninitialisierer auch mithilfe der -Eigenschaft TypeInitializer erhalten.
Die folgende Tabelle zeigt, welche Member einer Basisklasse von den Methoden zurückgegeben Get
werden, wenn sie einen Typ reflektieren.
Memberart | statischen | Nicht statisch |
---|---|---|
Konstruktor | Nein | Nein |
Feld | Nein | Ja. Ein Feld wird immer nach Name und Signatur ausblendet. |
Ereignis | Nicht zutreffend | Die allgemeine Typsystemregel ist, dass die Vererbung mit der Vererbung der Methoden identisch ist, die die -Eigenschaft implementieren. Reflektion behandelt Eigenschaften als "Hide-by-name-and-signature". Siehe Hinweis 2 weiter unten. |
Methode | Nein | Ja. Eine Methode (sowohl virtuell als auch nicht virtuell) kann nach Name oder Nach Name und Signatur ausblenden sein. |
Geschachtelter Typ | Nein | Nein |
Eigenschaft | Nicht zutreffend | Die allgemeine Typsystemregel ist, dass die Vererbung mit der Vererbung der Methoden identisch ist, die die -Eigenschaft implementieren. Reflektion behandelt Eigenschaften als "Hide-by-name-and-signature". Siehe Hinweis 2 weiter unten. |
Hide-by-name-and-signature berücksichtigt alle Teile der Signatur, einschließlich benutzerdefinierter Modifizierer, Rückgabetypen, Parametertypen, Sentinels und nicht verwalteter Aufrufkonventionen. Dies ist ein binärer Vergleich.
Für Reflektion werden Eigenschaften und Ereignisse nach Name und Signatur ausblendet. Wenn Sie über eine Eigenschaft mit einem get- und einem set-Accessor in der Basisklasse verfügen, die abgeleitete Klasse jedoch nur über einen get-Accessor verfügt, blendet die abgeleitete Klasseneigenschaft die Basisklasseneigenschaft aus, und Sie können nicht auf den Setter in der Basisklasse zugreifen.
Benutzerdefinierte Attribute sind nicht Teil des allgemeinen Typsystems.
Wenn der aktuelle einen konstruierten generischen Typ darstellt, gibt diese Methode die zurück, bei der die Typparameter durch die Type MemberInfo entsprechenden Typargumente ersetzt wurden.
Wenn der aktuelle einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Member der Klasseneinschränkung oder die Member von , wenn keine Klasseneinschränkung Type Object besteht.
Hinweis
Schließen Sie bei generischen Methoden die Typargumente nicht in name
ein. Der C#-Code sucht beispielsweise nach einem Member mit dem Textnamen " ", anstatt nach einer Methode namens , die über ein generisches Argument vom GetMember("MyMethod<int>")
MyMethod<int>
Typ MyMethod
int
verfügt.
Siehe auch
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Gilt für
GetMember(String, BindingFlags)
Sucht die angegebenen Member unter Verwendung der angegebenen Bindungseinschränkungen.
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()
Parameter
- name
- String
Die Zeichenfolge, die den Namen der abzurufenden Member enthält.
- bindingAttr
- BindingFlags
Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.
- oder - Default, um ein leeres Array zurückzugeben.
Gibt zurück
Ein Array von MemberInfo-Objekten, die die öffentlichen Member mit dem angegebenen Namen darstellen, sofern gefunden, andernfalls ein leeres Array.
Implementiert
Ausnahmen
name
ist null
.
Beispiele
Im folgenden Beispiel werden alle öffentlichen statischen Member der -Klasse myString
angezeigt, die mit dem Buchstaben C beginnen.
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
Hinweise
Diese Methode kann von einer abgeleiteten Klasse überschrieben werden.
Zu den Membern gehören Eigenschaften, Methoden, Felder, Ereignisse und so weiter.
Die -Methode gibt Keine Elemente in einer bestimmten Reihenfolge zurück, z. B. GetMember alphabetisch oder Deklarations reihenfolge. Ihr Code darf nicht von der Reihenfolge abhängen, in der Member zurückgegeben werden, da diese Reihenfolge variiert.
Die folgenden BindingFlags Filterflags können verwendet werden, um zu definieren, welche Member in die Suche enthalten sein sollen:
Sie müssen entweder oder
BindingFlags.Instance
BindingFlags.Static
angeben, um eine Rückgabe zu erhalten.Geben
BindingFlags.Public
Sie an, dass öffentliche Member in die Suche enthalten sein soll.Geben Sie an, dass nicht öffentliche Member (d. h. private, interne und
BindingFlags.NonPublic
geschützte Member) in die Suche enthalten sind.Geben
BindingFlags.FlattenHierarchy
Sie an,public
dass und statische Elemente in die Hierarchie eingeschlossen werdenprotected
sollen.private
Statische Elemente in geerbten Klassen sind nicht enthalten.
Die folgenden BindingFlags Modifiziererflags können verwendet werden, um die Funktionsweise der Suche zu ändern:
BindingFlags.IgnoreCase
, um den Fall von zuname
ignorieren.BindingFlags.DeclaredOnly
, um nur die Member zu durchsuchen, die auf der deklariert sind, nicht die Type Elemente, die einfach geerbt wurden.
Weitere Informationen finden Sie unter System.Reflection.BindingFlags.
Um den Klasseninitialisierer (statischer Konstruktor) mithilfe dieser Methodenüberladung zu erhalten, müssen Sie "statischer Konstruktor" für und | name
BindingFlags.Static ( in BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) für bindingAttr
angeben. Sie können den Klasseninitialisierer auch mithilfe der -Eigenschaft TypeInitializer erhalten.
Wenn der aktuelle einen konstruierten generischen Typ darstellt, gibt diese Methode die zurück, bei der die Typparameter durch die Type MemberInfo entsprechenden Typargumente ersetzt wurden.
Wenn der aktuelle einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Member der Klasseneinschränkung oder die Member von , wenn keine Klasseneinschränkung Type Object besteht.
Hinweis
Schließen Sie bei generischen Methoden die Typargumente nicht in name
ein. Der C#-Code sucht beispielsweise nach einem Member mit dem Textnamen " ", anstatt nach einer Methode namens , die über ein generisches Argument vom GetMember("MyMethod<int>")
MyMethod<int>
Typ MyMethod
int
verfügt.
Siehe auch
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Gilt für
GetMember(String, MemberTypes, BindingFlags)
Sucht die angegebenen Member des angegebenen Membertyps unter Verwendung der angegebenen Bindungseinschränkungen.
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()
Parameter
- name
- String
Die Zeichenfolge, die den Namen der abzurufenden Member enthält.
- type
- MemberTypes
Der zu suchende Wert.
- bindingAttr
- BindingFlags
Eine bitweise Kombination der Enumerationswerte, die angeben, wie die Suche durchgeführt wird.
- oder - Default, um ein leeres Array zurückzugeben.
Gibt zurück
Ein Array von MemberInfo-Objekten, die die öffentlichen Member mit dem angegebenen Namen darstellen, sofern gefunden, andernfalls ein leeres Array.
Implementiert
Ausnahmen
name
ist null
.
Eine abgeleitete Klasse muss eine Implementierung bereitstellen.
Beispiele
Im folgenden Beispiel werden alle Methoden der myString
-Klasse angezeigt, die mit dem Buchstaben C beginnen.
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
Hinweise
Zu den Membern gehören Eigenschaften, Methoden, Felder, Ereignisse und so weiter.
Die -Methode gibt Keine Elemente in einer bestimmten Reihenfolge zurück, z. B. GetMember alphabetisch oder Deklarations reihenfolge. Ihr Code darf nicht von der Reihenfolge abhängen, in der Member zurückgegeben werden, da diese Reihenfolge variiert.
Die folgenden BindingFlags Filterflags können verwendet werden, um zu definieren, welche Member in die Suche enthalten sein sollen:
Sie müssen entweder oder
BindingFlags.Instance
BindingFlags.Static
angeben, um eine Rückgabe zu erhalten.Geben
BindingFlags.Public
Sie an, dass öffentliche Member in die Suche enthalten sein soll.Geben Sie an, dass nicht öffentliche Member (d. h. private, interne und
BindingFlags.NonPublic
geschützte Member) in die Suche enthalten sind.Geben
BindingFlags.FlattenHierarchy
Sie an,public
dass und statische Elemente in die Hierarchie eingeschlossen werdenprotected
sollen.private
Statische Elemente in geerbten Klassen sind nicht enthalten.
Die folgenden BindingFlags Modifiziererflags können verwendet werden, um die Funktionsweise der Suche zu ändern:
BindingFlags.IgnoreCase
, um den Fall von zuname
ignorieren.BindingFlags.DeclaredOnly
, um nur die Member zu durchsuchen, die auf der deklariert sind, nicht die Type Elemente, die einfach geerbt wurden.
Weitere Informationen finden Sie unter System.Reflection.BindingFlags.
Um den Klasseninitialisierer (statischer Konstruktor) mithilfe dieser Methodenüberladung zu erhalten, müssen Sie den "statischen Konstruktor" für , für und | name
MemberTypes.Constructor ( in type
BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) für bindingAttr
angeben. Sie können den Klasseninitialisierer auch mithilfe der -Eigenschaft TypeInitializer erhalten.
Wenn der aktuelle einen konstruierten generischen Typ darstellt, gibt diese Methode die zurück, bei der die Typparameter durch die Type MemberInfo entsprechenden Typargumente ersetzt wurden.
Wenn der aktuelle einen Typparameter in der Definition eines generischen Typs oder einer generischen Methode darstellt, durchsucht diese Methode die Member der Klasseneinschränkung oder die Member von , wenn keine Klasseneinschränkung Type Object besteht.
Hinweis
Schließen Sie bei generischen Methoden die Typargumente nicht in name
ein. Der C#-Code sucht beispielsweise nach einem Member mit dem Textnamen " ", anstatt nach einer Methode namens , die über ein generisches Argument vom GetMember("MyMethod<int>")
MyMethod<int>
Typ MyMethod
int
verfügt.
Siehe auch
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)