Type.GetMember Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera określone elementy członkowskie bieżącego Type .
Przeciążenia
GetMember(String) |
Wyszukuje publiczne elementy członkowskie o określonej nazwie. |
GetMember(String, BindingFlags) |
Wyszukuje określone elementy członkowskie przy użyciu określonych ograniczeń powiązania. |
GetMember(String, MemberTypes, BindingFlags) |
Wyszukuje określone elementy członkowskie określonego typu składowego przy użyciu określonych ograniczeń powiązania. |
GetMember(String)
Wyszukuje publiczne elementy członkowskie o określonej nazwie.
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()
Parametry
- name
- String
Ciąg zawierający nazwę publicznych elementów członkowskich do uzyskania.
Zwraca
Tablica obiektów reprezentujących publiczne elementy członkowskie o określonej nazwie, jeśli zostanie znaleziona; w przeciwnym razie pusta MemberInfo tablica.
Implementuje
Wyjątki
name
to null
.
Przykłady
W poniższym przykładzie są wyświetlane wszystkie składowe String
klasy, które zaczynają się literą 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
Uwagi
W wyszukiwaniu name
jest wielkość liter. Wyszukiwanie obejmuje publiczne statyczne i publiczne elementy członkowskie wystąpienia.
Elementy członkowskie zawierają właściwości, metody, pola, zdarzenia i tak dalej.
Metoda GetMember nie zwraca elementów członkowskich w określonej kolejności, takich jak kolejność alfabetyczna lub deklaracja. Kod nie może zależeć od kolejności, w której są zwracane elementy członkowskie, ponieważ kolejność się zmienia.
To przeciążenie metody nie znajdzie inicjatorów klas (konstruktor statyczny). Aby znaleźć inicjatory klasy, użyj przeciążenia, które przyjmuje wartość BindingFlags i | ( w BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic). Możesz również pobrać inicjator klasy przy użyciu TypeInitializer właściwości .
W poniższej tabeli przedstawiono, jakie składowe klasy bazowej są zwracane przez metody Get
podczas odzwierciedlania w typie.
Typ elementu członkowskiego | Static | Niestatyczna |
---|---|---|
Konstruktor | Nie | Nie |
Pole | Nie | Tak. Pole jest zawsze ukryte przez nazwę i podpis. |
Zdarzenie | Nie dotyczy | Zasadą systemu typu jest to, że dziedziczenie jest takie samo, jak w przypadku metod, które implementują właściwość. Odbicie traktuje właściwości jako ukryte przez nazwę i podpis. Patrz Uwaga 2 poniżej. |
Metoda | Nie | Tak. Metodą (zarówno wirtualną, jak i niewirtualną) może być ukrycie przez nazwę lub przez nazwę i podpis. |
Typu zagnieżdżony | Nie | Nie |
Właściwość | Nie dotyczy | Zasadą systemu typu jest to, że dziedziczenie jest takie samo, jak w przypadku metod, które implementują właściwość. Odbicie traktuje właściwości jako ukryte przez nazwę i podpis. Patrz Uwaga 2 poniżej. |
Ukrycie przez nazwę i podpis dotyczy wszystkich części podpisu, w tym modyfikatorów niestandardowych, zwraca typy, typy parametrów, wartowników i niezarządzane konwencje wywoływania. To jest porównanie binarne.
W celu odbicia właściwości i zdarzenia są ukrywane przez nazwę i podpis. Jeśli istnieje właściwość z akcesorem pobierania i ustawiania w klasie bazowej, ale odziedziczona klasa ma tylko akcesor pobierania, właściwość klasy odziedziczonej ukrywa właściwości klasy bazowej, a nie można uzyskać dostępu do metody ustawiającej w klasie bazowej.
Atrybuty niestandardowe nie są częścią wspólnego typu systemowego.
Jeśli bieżący reprezentuje skonstruowany typ ogólny, ta metoda zwraca typ z parametrami typu zastąpionymi odpowiednimi Type MemberInfo argumentami typu.
Jeśli bieżąca reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda przeszukuje składowe ograniczenia klasy lub składowe klasy , jeśli nie ma żadnych Type Object ograniczeń klasy.
Uwaga
W przypadku metod ogólnych nie należy uwzględniać argumentów typu w pliku name
. Na przykład kod w języku C# wyszukuje członka o nazwie GetMember("MyMethod<int>")
tekstowej " ", a nie dla metody o nazwie , która ma jeden MyMethod<int>
ogólny argument typu MyMethod
int
.
Zobacz też
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Dotyczy
GetMember(String, BindingFlags)
Wyszukuje określone elementy członkowskie przy użyciu określonych ograniczeń powiązania.
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()
Parametry
- name
- String
Ciąg zawierający nazwę elementów członkowskich do uzyskania.
- bindingAttr
- BindingFlags
Bitowa kombinacja wartości wyliczenia, które określają sposób przeprowadzania wyszukiwania.
-lub- Default , aby zwrócić pustą tablicę.
Zwraca
Tablica obiektów reprezentujących publiczne elementy członkowskie o określonej nazwie, jeśli zostanie znaleziona; w przeciwnym razie pusta MemberInfo tablica.
Implementuje
Wyjątki
name
to null
.
Przykłady
W poniższym przykładzie są wyświetlane wszystkie publiczne statyczne składowe myString
klasy, które zaczynają się literą 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
Uwagi
Metoda ta może być zastąpiona przez klasę pochodną.
Elementy członkowskie zawierają właściwości, metody, pola, zdarzenia i tak dalej.
Metoda GetMember nie zwraca elementów członkowskich w określonej kolejności, takich jak kolejność alfabetyczna lub deklaracja. Kod nie może zależeć od kolejności, w której są zwracane elementy członkowskie, ponieważ kolejność się zmienia.
Następujące BindingFlags flagi filtru mogą służyć do definiowania elementów członkowskich do dołączyć do wyszukiwania:
Aby uzyskać zwrot, należy określić wartość lub
BindingFlags.Instance
BindingFlags.Static
.Określ,
BindingFlags.Public
aby uwzględnić publiczne elementy członkowskie w wyszukiwaniu.Określ,
BindingFlags.NonPublic
aby uwzględnić niepublicznie członków (czyli członków prywatnych, wewnętrznych i chronionych) w wyszukiwaniu.Określ
BindingFlags.FlattenHierarchy
dołączaniepublic
i statyczne elementy członkowskie w hierarchii; statyczneprotected
private
składowe w klasach dziedziczonych nie są uwzględniane.
Następujące BindingFlags flagi modyfikujące mogą służyć do zmiany sposobu działania wyszukiwania:
BindingFlags.IgnoreCase
, aby zignorować przypadekname
.BindingFlags.DeclaredOnly
wyszukiwanie tylko tych elementów członkowskich zadeklarowanych w Type , a nie tych, które były po prostu dziedziczone.
Aby uzyskać więcej informacji, zobacz System.Reflection.BindingFlags.
Aby uzyskać inicjator klasy (konstruktor statyczny) przy użyciu tego przeciążenia metody, należy określić "konstruktor statyczny" dla klasy i | ( w name
BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) dla . bindingAttr
Możesz również pobrać inicjator klasy przy użyciu TypeInitializer właściwości .
Jeśli bieżący reprezentuje skonstruowany typ ogólny, ta metoda zwraca typ z parametrami typu zastąpionymi odpowiednimi Type MemberInfo argumentami typu.
Jeśli bieżąca reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda przeszukuje składowe ograniczenia klasy lub składowe klasy , jeśli nie ma żadnych Type Object ograniczeń klasy.
Uwaga
W przypadku metod ogólnych nie należy uwzględniać argumentów typu w pliku name
. Na przykład kod w języku C# wyszukuje członka o nazwie GetMember("MyMethod<int>")
tekstowej " ", a nie dla metody o nazwie , która ma jeden MyMethod<int>
ogólny argument typu MyMethod
int
.
Zobacz też
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Dotyczy
GetMember(String, MemberTypes, BindingFlags)
Wyszukuje określone elementy członkowskie określonego typu składowego przy użyciu określonych ograniczeń powiązania.
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()
Parametry
- name
- String
Ciąg zawierający nazwę elementów członkowskich do uzyskania.
- type
- MemberTypes
Wartość do wyszukania.
- bindingAttr
- BindingFlags
Bitowa kombinacja wartości wyliczenia, które określają sposób przeprowadzania wyszukiwania.
-lub- Default , aby zwrócić pustą tablicę.
Zwraca
Tablica obiektów reprezentujących publiczne elementy członkowskie o określonej nazwie, jeśli zostanie znaleziona; w przeciwnym razie pusta MemberInfo tablica.
Implementuje
Wyjątki
name
to null
.
Klasa pochodna musi zapewniać implementację.
Przykłady
W poniższym przykładzie przedstawiono wszystkie metody myString
klasy, które zaczynają się od litery 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
Uwagi
Elementy członkowskie zawierają właściwości, metody, pola, zdarzenia i tak dalej.
Metoda GetMember nie zwraca elementów członkowskich w określonej kolejności, takich jak kolejność alfabetyczna lub deklaracja. Kod nie może zależeć od kolejności, w której są zwracane elementy członkowskie, ponieważ kolejność się zmienia.
Następujące BindingFlags flagi filtru mogą służyć do definiowania elementów członkowskich do dołączyć do wyszukiwania:
Aby uzyskać zwrot, należy określić wartość lub
BindingFlags.Instance
BindingFlags.Static
.Określ,
BindingFlags.Public
aby uwzględnić publiczne elementy członkowskie w wyszukiwaniu.Określ,
BindingFlags.NonPublic
aby uwzględnić niepublicznie członków (czyli członków prywatnych, wewnętrznych i chronionych) w wyszukiwaniu.Określ
BindingFlags.FlattenHierarchy
dołączaniepublic
i statyczne elementy członkowskie w hierarchii; statyczneprotected
private
składowe w klasach dziedziczonych nie są uwzględniane.
Następujące BindingFlags flagi modyfikujące mogą służyć do zmiany sposobu działania wyszukiwania:
BindingFlags.IgnoreCase
, aby zignorować przypadekname
.BindingFlags.DeclaredOnly
wyszukiwanie tylko tych elementów członkowskich zadeklarowanych w Type , a nie tych, które były po prostu dziedziczone.
Aby uzyskać więcej informacji, zobacz System.Reflection.BindingFlags.
Aby uzyskać inicjator klasy (konstruktor statyczny) przy użyciu tego przeciążenia metody, należy określić "konstruktor statyczny" dla , i | ( w name
MemberTypes.Constructor type
BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) dla bindingAttr
. Możesz również pobrać inicjator klasy przy użyciu TypeInitializer właściwości .
Jeśli bieżący reprezentuje skonstruowany typ ogólny, ta metoda zwraca typ z parametrami typu zastąpionymi odpowiednimi Type MemberInfo argumentami typu.
Jeśli bieżąca reprezentuje parametr typu w definicji typu ogólnego lub metody ogólnej, ta metoda przeszukuje składowe ograniczenia klasy lub składowe klasy , jeśli nie ma żadnych Type Object ograniczeń klasy.
Uwaga
W przypadku metod ogólnych nie należy uwzględniać argumentów typu w pliku name
. Na przykład kod w języku C# wyszukuje członka o nazwie GetMember("MyMethod<int>")
tekstowej " ", a nie dla metody o nazwie , która ma jeden MyMethod<int>
ogólny argument typu MyMethod
int
.
Zobacz też
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)