Type.GetMember Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá zadané členy aktuálního Type .
Přetížení
GetMember(String) |
Vyhledá veřejné členy se zadaným názvem. |
GetMember(String, BindingFlags) |
Vyhledá zadané členy pomocí zadaných omezení vazby. |
GetMember(String, MemberTypes, BindingFlags) |
Vyhledá zadané členy zadaného typu člena pomocí zadaných omezení vazby. |
GetMember(String)
Vyhledá veřejné členy se zadaným názvem.
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
Řetězec obsahující název veřejných členů, které mají být získány.
Návraty
Pole MemberInfo objektů reprezentující veřejné členy se zadaným názvem, pokud je nalezeno; v opačném případě prázdné pole.
Implementuje
Výjimky
name
je null
.
Příklady
Následující příklad zobrazí všechny členy String
třídy, které začínají písmenem 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
Poznámky
Hledání rozlišuje name
velká a malá písmena. Hledání zahrnuje veřejné statické a veřejné členy instance.
Členy obsahují vlastnosti, metody, pole, události a podobně.
GetMemberMetoda nevrací členy v určitém pořadí, jako je abecední nebo pořadí deklarace. Kód nesmí záviset na pořadí, ve kterém jsou členy vráceny, protože jejich pořadí se může měnit.
Tato přetížená metoda nenalezne Inicializátory třídy (static konstruktoru). chcete-li najít inicializátory třídy, použijte přetížení, které přijímá BindingFlags , a zadejte BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or
BindingFlags.NonPublic v Visual Basic). Můžete také získat inicializátor třídy pomocí TypeInitializer Vlastnosti.
Následující tabulka ukazuje, jaké členy základní třídy jsou vráceny Get
metodami, pokud se odráží na typ.
Typ členu | Static | Nestatický |
---|---|---|
Konstruktor | No | No |
Pole | No | Yes. Pole je vždy skrýváno podle názvu a podpisu. |
Událost | Neuvedeno | Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže. |
Metoda | No | Yes. Metody (virtuální i nevirtuální) mohou být skrývány podle názvu nebo podle názvu a podpisu. |
Vnořený typ | No | No |
Vlastnost | Neuvedeno | Pro systém typů platí obecné pravidlo, že dědičnost je stejná jako u metod, které implementují vlastnost. Reflexe pracuje s třídami jako se skrývanými podle názvu a podpisu. Viz poznámka 2 níže. |
Skrývání podle názvu a podpisu bere v úvahu všechny části podpisu včetně vlastních modifikátorů, návratových typů, typů parametrů, sentinelů a nespravovaných konvencí volání. Jedná se o binární porovnání.
Pro účely reflexe jsou vlastnosti a události skrývány podle názvu a podpisu. Má-li vlastnost v základní třídě přístupové metody get i set, ale odvozená třída má pouze přístupovou metodu get, vlastnost odvozené třídy skryje vlastnost základní třídy a nebudete mít k dispozici přístup k metodě set základní třídy.
Vlastní atributy nejsou součástí systému společných typů.
Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda MemberInfo s parametry typu nahrazenými odpovídajícími argumenty typu.
Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda vyhledá členy omezení třídy nebo členy, Object Pokud neexistuje omezení třídy.
Poznámka
Pro obecné metody nezahrnujte argumenty typu v name
. Například kód jazyka C# GetMember("MyMethod<int>")
vyhledává člen s názvem text " MyMethod<int>
", nikoli pro metodu s názvem MyMethod
, která má jeden obecný argument typu int
.
Viz také
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Platí pro
GetMember(String, BindingFlags)
Vyhledá zadané členy pomocí zadaných omezení vazby.
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
Řetězec obsahující název členů, které mají být získány.
- bindingAttr
- BindingFlags
Bitová kombinace hodnot výčtu, které určují, jak se provádí hledání.
-nebo- Default pro vrácení prázdného pole.
Návraty
Pole MemberInfo objektů reprezentující veřejné členy se zadaným názvem, pokud je nalezeno; v opačném případě prázdné pole.
Implementuje
Výjimky
name
je null
.
Příklady
Následující příklad zobrazí všechny veřejné statické členy myString
třídy, které začínají písmenem 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
Poznámky
Tato metoda může být přepsána odvozenou třídou.
Členy obsahují vlastnosti, metody, pole, události a podobně.
GetMemberMetoda nevrací členy v určitém pořadí, jako je abecední nebo pořadí deklarace. Kód nesmí záviset na pořadí, ve kterém jsou členy vráceny, protože jejich pořadí se může měnit.
Následující BindingFlags příznaky filtru lze použít k definování členů, kteří mají být zahrnuti do hledání:
BindingFlags.Instance
BindingFlags.Static
Chcete-li získat návrat, je nutné zadat buď nebo.Zadejte
BindingFlags.Public
, chcete-li do hledání zahrnout veřejné členy.Určete
BindingFlags.NonPublic
, jestli se ve vyhledávání mají zahrnout neveřejné členy (tj. soukromé, interní a chráněné členy).Určete,
BindingFlags.FlattenHierarchy
že se mají zahrnoutpublic
aprotected
statické členy v hierarchii.private
statické členy v děděných třídách nejsou zahrnuté.
Následující BindingFlags příznaky modifikátoru lze použít ke změně toho, jak hledání funguje:
BindingFlags.IgnoreCase
pro ignorování velkých a malých písmenname
.BindingFlags.DeclaredOnly
Chcete-li hledat pouze členy deklarované v Type , nikoli členy, které byly jednoduše zděděny.
Další informace naleznete v tématu System.Reflection.BindingFlags.
chcete-li získat inicializátor třídy (statický konstruktor) pomocí tohoto přetížení metody, je nutné zadat "statický konstruktor" pro name
a BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or
BindingFlags.NonPublic v Visual Basic) pro bindingAttr
. Můžete také získat inicializátor třídy pomocí TypeInitializer Vlastnosti.
Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda MemberInfo s parametry typu nahrazenými odpovídajícími argumenty typu.
Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda vyhledá členy omezení třídy nebo členy, Object Pokud neexistuje omezení třídy.
Poznámka
Pro obecné metody nezahrnujte argumenty typu v name
. Například kód jazyka C# GetMember("MyMethod<int>")
vyhledává člen s názvem text " MyMethod<int>
", nikoli pro metodu s názvem MyMethod
, která má jeden obecný argument typu int
.
Viz také
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Platí pro
GetMember(String, MemberTypes, BindingFlags)
Vyhledá zadané členy zadaného typu člena pomocí zadaných omezení vazby.
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
Řetězec obsahující název členů, které mají být získány.
- type
- MemberTypes
Hodnota, kterou chcete vyhledat.
- bindingAttr
- BindingFlags
Bitová kombinace hodnot výčtu, které určují, jak se provádí hledání.
-nebo- Default pro vrácení prázdného pole.
Návraty
Pole MemberInfo objektů reprezentující veřejné členy se zadaným názvem, pokud je nalezeno; v opačném případě prázdné pole.
Implementuje
Výjimky
name
je null
.
Odvozená třída musí poskytovat implementaci.
Příklady
Následující příklad zobrazí všechny metody myString
třídy, které začínají písmenem 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
Poznámky
Členy obsahují vlastnosti, metody, pole, události a podobně.
GetMemberMetoda nevrací členy v určitém pořadí, jako je abecední nebo pořadí deklarace. Kód nesmí záviset na pořadí, ve kterém jsou členy vráceny, protože jejich pořadí se může měnit.
Následující BindingFlags příznaky filtru lze použít k definování členů, kteří mají být zahrnuti do hledání:
BindingFlags.Instance
BindingFlags.Static
Chcete-li získat návrat, je nutné zadat buď nebo.Zadejte
BindingFlags.Public
, chcete-li do hledání zahrnout veřejné členy.Určete
BindingFlags.NonPublic
, jestli se ve vyhledávání mají zahrnout neveřejné členy (tj. soukromé, interní a chráněné členy).Určete,
BindingFlags.FlattenHierarchy
že se mají zahrnoutpublic
aprotected
statické členy v hierarchii.private
statické členy v děděných třídách nejsou zahrnuté.
Následující BindingFlags příznaky modifikátoru lze použít ke změně toho, jak hledání funguje:
BindingFlags.IgnoreCase
pro ignorování velkých a malých písmenname
.BindingFlags.DeclaredOnly
Chcete-li hledat pouze členy deklarované v Type , nikoli členy, které byly jednoduše zděděny.
Další informace naleznete v tématu System.Reflection.BindingFlags.
chcete-li získat inicializátor třídy (statický konstruktor) pomocí tohoto přetížení metody, je nutné zadat "statický konstruktor" pro name
, MemberTypes.Constructor pro type
a BindingFlags.Static | BindingFlags.NonPublic ( BindingFlags.Static Or
BindingFlags.NonPublic v Visual Basic) pro bindingAttr
. Můžete také získat inicializátor třídy pomocí TypeInitializer Vlastnosti.
Pokud aktuální Type představuje Konstruovaný obecný typ, vrátí tato metoda MemberInfo s parametry typu nahrazenými odpovídajícími argumenty typu.
Pokud aktuální Type představuje parametr typu v definici obecného typu nebo obecné metody, tato metoda vyhledá členy omezení třídy nebo členy, Object Pokud neexistuje omezení třídy.
Poznámka
Pro obecné metody nezahrnujte argumenty typu v name
. Například kód jazyka C# GetMember("MyMethod<int>")
vyhledává člen s názvem text " MyMethod<int>
", nikoli pro metodu s názvem MyMethod
, která má jeden obecný argument typu int
.
Viz také
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)