Type.GetMember Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém os membros especificados do Type atual.
Sobrecargas
GetMember(String) |
Pesquisa a propriedade pública com o nome especificado. |
GetMember(String, BindingFlags) |
Pesquisa os membros especificados usando as restrições de associação especificadas. |
GetMember(String, MemberTypes, BindingFlags) |
Pesquisa os membros especificados do tipo de membro especificado, usando as restrições de associação especificadas. |
GetMember(String)
Pesquisa a propriedade pública com o nome especificado.
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()
Parâmetros
- name
- String
A cadeia de caracteres que contém o nome dos membros públicos a serem obtidos.
Retornos
Uma matriz de objetos MemberInfo que representa os membros públicos com o nome especificado, se encontrado; caso contrário, uma matriz vazia.
Implementações
Exceções
name
é null
.
Exemplos
O exemplo a seguir exibe todos os membros da String
classe que começam com a letra 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
Comentários
A pesquisa de name
diferencia maiúsculas de minúsculas. A pesquisa inclui membros de instância pública estática e pública.
Entre os membros estão propriedades, campos, métodos, eventos etc.
O GetMember método não retorna membros em uma ordem específica, como ordem alfabética ou de declaração. O código não deve depender de ordem na qual os membros são retornados, porque essa ordem varia.
Essa sobrecarga de método não encontrará inicializadores de classe (construtor estático). Para encontrar inicializadores de classe, use uma sobrecarga que usa BindingFlags e BindingFlags.Static especifique | BindingFlags.NonPublic ( em BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic). Também é possível obter o inicializador da classe usando-se a propriedade TypeInitializer.
A tabela a seguir mostra quais membros de uma classe base são retornados pelos métodos Get
durante a reflexão em um tipo.
Tipo do membro | Estático | Não estático |
---|---|---|
Construtor | Não | Não |
Campo | Não | Sim. Um campo permanece sempre oculto por nome e assinatura. |
Evento | Não aplicável | A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade. Reflexão trata propriedades como ocultas por nome e assinatura. Consulte a observação 2 abaixo. |
Método | Não | Sim. Um método (virtual e não virtual) pode permanecer oculto por nome ou por nome e assinatura. |
Tipo aninhado | Não | Não |
Propriedade | Não aplicável | A regra de sistema do tipo comum é que a herança é a mesma dos métodos que implementam a propriedade. Reflexão trata propriedades como ocultas por nome e assinatura. Consulte a observação 2 abaixo. |
Oculto por nome e assinatura considera todas as partes da assinatura, inclusive modificadores personalizados, tipos de retorno, tipos de parâmetro, sentinelas e convenções de chamada não gerenciadas. Esta é uma comparação binária.
Para reflexão, propriedades e eventos permanecem ocultos por nome e assinatura. Se você tiver uma propriedade com um acessador get e set na classe base, mas a classe derivada tiver apenas um acessador get, a propriedade de classe derivada ocultará a propriedade da classe base e você não poderá acessar o setter na classe base.
Atributos personalizados não fazem parte do sistema de tipo comum.
Caso o Type atual represente um tipo genérico construído, este método retorna o MemberInfo com os parâmetros de tipo substituídos pelos argumentos de tipo apropriados.
Caso o Type atual represente um parâmetro de tipo na definição de um tipo genérico ou um método genérico, este método procura membros da restrição de classe ou os membros de Object caso não haja restrição de classe.
Observação
Para métodos genéricos, não inclua os argumentos de tipo em name
. Por exemplo, o código do C# GetMember("MyMethod<int>")
procura um membro com o nome de texto "MyMethod<int>
", e não um método chamado MyMethod
que tem um argumento genérico do tipo int
.
Confira também
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Aplica-se a
GetMember(String, BindingFlags)
Pesquisa os membros especificados usando as restrições de associação especificadas.
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()
Parâmetros
- name
- String
A cadeia de caracteres que contém o nome dos membros a serem obtidos.
- bindingAttr
- BindingFlags
Uma combinação bit a bit dos valores de enumeração que especificam como a pesquisa é realizada.
- ou - Default para retornar uma matriz vazia.
Retornos
Uma matriz de objetos MemberInfo que representa os membros públicos com o nome especificado, se encontrado; caso contrário, uma matriz vazia.
Implementações
Exceções
name
é null
.
Exemplos
O exemplo a seguir exibe todos os membros estáticos públicos myString
da classe que começam com a letra 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
Comentários
Este método pode ser substituído por uma classe derivada.
Entre os membros estão propriedades, campos, métodos, eventos etc.
O GetMember método não retorna membros em uma ordem específica, como ordem alfabética ou de declaração. O código não deve depender de ordem na qual os membros são retornados, porque essa ordem varia.
Os seguintes sinalizadores de filtro BindingFlags podem ser usados para definir quais membros devem ser incluídos na pesquisa:
Você deve especificar
BindingFlags.Instance
ouBindingFlags.Static
para obter um retorno.Especifique
BindingFlags.Public
para incluir membros públicos na pesquisa.Especifique
BindingFlags.NonPublic
para incluir membros não públicos (ou seja, membros particulares, internos e protegidos) na pesquisa.Especifique
BindingFlags.FlattenHierarchy
para incluir os membros estáticospublic
eprotected
acima na hierarquia; os membros estáticosprivate
em classes herdadas não são incluídos.
Os seguintes sinalizadores de modificador BindingFlags podem ser usados para alterar como a pesquisa funciona:
BindingFlags.IgnoreCase
para ignorar o caso dename
.BindingFlags.DeclaredOnly
para pesquisar apenas os membros declarados no Type , não os membros que foram simplesmente herdados.
Consulte System.Reflection.BindingFlags para obter mais informações.
Para obter o inicializador de classe (construtor estático) usando essa sobrecarga de método, você deve especificar "construtor estático" para e | ( no name
BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) para bindingAttr
. Também é possível obter o inicializador da classe usando-se a propriedade TypeInitializer.
Caso o Type atual represente um tipo genérico construído, este método retorna o MemberInfo com os parâmetros de tipo substituídos pelos argumentos de tipo apropriados.
Caso o Type atual represente um parâmetro de tipo na definição de um tipo genérico ou um método genérico, este método procura membros da restrição de classe ou os membros de Object caso não haja restrição de classe.
Observação
Para métodos genéricos, não inclua os argumentos de tipo em name
. Por exemplo, o código do C# GetMember("MyMethod<int>")
procura um membro com o nome de texto "MyMethod<int>
", e não um método chamado MyMethod
que tem um argumento genérico do tipo int
.
Confira também
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Aplica-se a
GetMember(String, MemberTypes, BindingFlags)
Pesquisa os membros especificados do tipo de membro especificado, usando as restrições de associação especificadas.
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()
Parâmetros
- name
- String
A cadeia de caracteres que contém o nome dos membros a serem obtidos.
- type
- MemberTypes
O valor a ser procurado.
- bindingAttr
- BindingFlags
Uma combinação bit a bit dos valores de enumeração que especificam como a pesquisa é realizada.
- ou - Default para retornar uma matriz vazia.
Retornos
Uma matriz de objetos MemberInfo que representa os membros públicos com o nome especificado, se encontrado; caso contrário, uma matriz vazia.
Implementações
Exceções
name
é null
.
Uma classe derivada deve fornecer uma implementação.
Exemplos
O exemplo a seguir exibe todos os métodos da myString
classe que começam com a letra 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
Comentários
Entre os membros estão propriedades, campos, métodos, eventos etc.
O GetMember método não retorna membros em uma ordem específica, como ordem alfabética ou de declaração. O código não deve depender de ordem na qual os membros são retornados, porque essa ordem varia.
Os seguintes sinalizadores de filtro BindingFlags podem ser usados para definir quais membros devem ser incluídos na pesquisa:
Você deve especificar
BindingFlags.Instance
ouBindingFlags.Static
para obter um retorno.Especifique
BindingFlags.Public
para incluir membros públicos na pesquisa.Especifique
BindingFlags.NonPublic
para incluir membros não públicos (ou seja, membros particulares, internos e protegidos) na pesquisa.Especifique
BindingFlags.FlattenHierarchy
para incluir os membros estáticospublic
eprotected
acima na hierarquia; os membros estáticosprivate
em classes herdadas não são incluídos.
Os seguintes sinalizadores de modificador BindingFlags podem ser usados para alterar como a pesquisa funciona:
BindingFlags.IgnoreCase
para ignorar o caso dename
.BindingFlags.DeclaredOnly
para pesquisar apenas os membros declarados no Type , não os membros que foram simplesmente herdados.
Consulte System.Reflection.BindingFlags para obter mais informações.
Para obter o inicializador de classe (construtor estático) usando essa sobrecarga de método, você deve especificar "construtor estático" para , para name
e | ( MemberTypes.Constructor no type
BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) para bindingAttr
. Também é possível obter o inicializador da classe usando-se a propriedade TypeInitializer.
Caso o Type atual represente um tipo genérico construído, este método retorna o MemberInfo com os parâmetros de tipo substituídos pelos argumentos de tipo apropriados.
Caso o Type atual represente um parâmetro de tipo na definição de um tipo genérico ou um método genérico, este método procura membros da restrição de classe ou os membros de Object caso não haja restrição de classe.
Observação
Para métodos genéricos, não inclua os argumentos de tipo em name
. Por exemplo, o código do C# GetMember("MyMethod<int>")
procura um membro com o nome de texto "MyMethod<int>
", e não um método chamado MyMethod
que tem um argumento genérico do tipo int
.
Confira também
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)