Type.GetMember Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém os membros especificados do atual Type.
Sobrecargas
| Name | Description |
|---|---|
| GetMember(String) |
Pesquisa pelos membros públicos com o nome especificado. |
| GetMember(String, BindingFlags) |
Pesquisa pelos membros especificados, usando as restrições de ligação especificadas. |
| GetMember(String, MemberTypes, BindingFlags) |
Pesquisa pelos membros especificados do tipo de membro especificado, usando as restrições de ligação especificadas. |
GetMember(String)
Pesquisa pelos membros públicos com o nome especificado.
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()
Parâmetros
- name
- String
A corda que contém o nome dos membros públicos a obter.
Devoluções
Um array de MemberInfo objetos que representam os membros públicos com o nome especificado, se encontrados; caso contrário, um array vazio.
Implementações
Exceções
name é null.
Exemplos
O exemplo seguinte mostra todos os membros da String turma que começam com a letra 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
Observações
A pesquisa diferencia name maiúsculas de minúsculas. A pesquisa inclui membros públicos estáticos e de instâncias públicas.
Os membros incluem propriedades, métodos, campos, eventos, e assim por diante.
Em versões .NET 6 e anteriores, o método GetMember não devolve os membros numa ordem específica, como ordem alfabética ou de declaração. O seu código não deve depender da ordem em que os membros são devolvidos, porque essa ordem varia. No entanto, a partir do .NET 7, a ordenação é determinística com base na ordenação dos metadados na assembleia.
Esta sobrecarga de métodos não encontrará inicializadores de classe (construtor estático). Para encontrar inicializadores de classe, use uma sobrecarga que use BindingFlags e especifique BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic em Visual Basic). Também pode obter o inicializador de classes usando a TypeInitializer propriedade.
A tabela a seguir mostra quais membros de uma classe base são retornados pelos Get métodos ao refletir sobre um tipo.
| Tipo de Membro | Estático | Não-estático |
|---|---|---|
| Construtor | No | No |
| Campo | No | Yes. Um campo é sempre ocultado com base no nome e assinatura. |
| Event | Não aplicável | A regra comum do sistema de tipos é que a herança é a mesma dos métodos que implementam a propriedade. A reflexão trata propriedades como esconder pelo nome e assinatura. Veja a nota 2 abaixo. |
| Método | No | Yes. Um método (virtual e não virtual) pode ser ocultado por nome ou ocultado por nome e assinatura. |
| Tipo aninhado | No | No |
| Property | Não aplicável | A regra comum do sistema de tipos é que a herança é a mesma dos métodos que implementam a propriedade. A reflexão trata propriedades como esconder pelo nome e assinatura. Veja a nota 2 abaixo. |
Ocultar por nome e assinatura considera todas as partes da assinatura, incluindo modificadores personalizados, tipos de retorno, tipos de parâmetros, sentinelas e convenções de chamada não gerenciadas. Esta é uma comparação binária.
Para reflexão, as propriedades e os eventos são ocultados por nome e assinatura. Se você tiver uma propriedade com um acessador get e um set na classe base, mas a classe derivada tiver apenas um acessor get, a propriedade de classe derivada ocultará a propriedade de classe base e você não poderá acessar o setter na classe base.
Os atributos personalizados não fazem parte do sistema de tipo comum.
Se o current Type representa um tipo genérico construído, esse método retorna o MemberInfo com os parâmetros type substituídos pelos argumentos de tipo apropriados.
Se a corrente Type representa um parâmetro de tipo na definição de um tipo genérico ou método genérico, este método pesquisa os membros da restrição de classe, ou os membros de Object se não houver restrição de classe.
Note
Para métodos genéricos, não inclua os argumentos tipo em name. Por exemplo, o código GetMember("MyMethod<int>") C# procura um membro com o nome de texto "MyMethod<int>", em vez de um método nomeado MyMethod que tenha um argumento genérico do tipo int.
Ver também
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Aplica-se a
GetMember(String, BindingFlags)
Pesquisa pelos membros especificados, usando as restrições de ligaçã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 corda que contém o nome dos membros a receber.
- bindingAttr
- BindingFlags
Uma combinação bit a bit dos valores de enumeração que especifica como a pesquisa é realizada.
-ou-
Default para devolver um array vazio.
Devoluções
Um array de MemberInfo objetos que representam os membros públicos com o nome especificado, se encontrados; caso contrário, um array vazio.
Implementações
Exceções
name é null.
Exemplos
O exemplo seguinte mostra todos os membros públicos estáticos da myString classe que começam com a letra 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
Observações
Este método pode ser anulado por uma classe derivada.
Os membros incluem propriedades, métodos, campos, eventos, e assim por diante.
Em versões .NET 6 e anteriores, o método GetMember não devolve os membros numa ordem específica, como ordem alfabética ou de declaração. O seu código não deve depender da ordem em que os membros são devolvidos, porque essa ordem varia. No entanto, a partir do .NET 7, a ordenação é determinística com base na ordenação dos metadados na assembleia.
As seguintes BindingFlags bandeiras de filtro podem ser usadas para definir quais os membros a incluir na pesquisa:
Você deve especificar ou
BindingFlags.InstanceouBindingFlags.Staticpara obter um retorno.Especifique
BindingFlags.Publicincluir membros públicos na pesquisa.Especifique
BindingFlags.NonPublicincluir membros não públicos (ou seja, privados, internos e protegidos) na busca.Especifique
BindingFlags.FlattenHierarchypara incluirpubliceprotectedmembros estáticos na hierarquia;privatemembros estáticos em classes herdadas não são incluídos.
Os seguintes BindingFlags sinalizadores modificadores podem ser usados para alterar o funcionamento da pesquisa:
BindingFlags.IgnoreCaseignorar o caso dename.BindingFlags.DeclaredOnlypara procurar 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 classes (construtor estático) usando esta sobrecarga de método, deve especificar "construtor estático" para name, e BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic em Visual Basic) para bindingAttr. Também pode obter o inicializador de classes usando a TypeInitializer propriedade.
Se o current Type representa um tipo genérico construído, esse método retorna o MemberInfo com os parâmetros type substituídos pelos argumentos de tipo apropriados.
Se a corrente Type representa um parâmetro de tipo na definição de um tipo genérico ou método genérico, este método pesquisa os membros da restrição de classe, ou os membros de Object se não houver restrição de classe.
Note
Para métodos genéricos, não inclua os argumentos tipo em name. Por exemplo, o código GetMember("MyMethod<int>") C# procura um membro com o nome de texto "MyMethod<int>", em vez de um método nomeado MyMethod que tenha um argumento genérico do tipo int.
Ver também
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Aplica-se a
GetMember(String, MemberTypes, BindingFlags)
Pesquisa pelos membros especificados do tipo de membro especificado, usando as restrições de ligaçã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 corda que contém o nome dos membros a receber.
- type
- MemberTypes
O valor a procurar.
- bindingAttr
- BindingFlags
Uma combinação bit a bit dos valores de enumeração que especifica como a pesquisa é realizada.
-ou-
Default para devolver um array vazio.
Devoluções
Um array de MemberInfo objetos que representam os membros públicos com o nome especificado, se encontrados; caso contrário, um array vazio.
Implementações
Exceções
name é null.
Uma classe derivada deve fornecer uma implementação.
Exemplos
O exemplo seguinte apresenta todos os métodos da myString classe que começam com a letra 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
Observações
Os membros incluem propriedades, métodos, campos, eventos, e assim por diante.
Em versões .NET 6 e anteriores, o método GetMember não devolve os membros numa ordem específica, como ordem alfabética ou de declaração. O seu código não deve depender da ordem em que os membros são devolvidos, porque essa ordem varia. No entanto, a partir do .NET 7, a ordenação é determinística com base na ordenação dos metadados na assembleia.
As seguintes BindingFlags bandeiras de filtro podem ser usadas para definir quais os membros a incluir na pesquisa:
Você deve especificar ou
BindingFlags.InstanceouBindingFlags.Staticpara obter um retorno.Especifique
BindingFlags.Publicincluir membros públicos na pesquisa.Especifique
BindingFlags.NonPublicincluir membros não públicos (ou seja, privados, internos e protegidos) na busca.Especifique
BindingFlags.FlattenHierarchypara incluirpubliceprotectedmembros estáticos na hierarquia;privatemembros estáticos em classes herdadas não são incluídos.
Os seguintes BindingFlags sinalizadores modificadores podem ser usados para alterar o funcionamento da pesquisa:
BindingFlags.IgnoreCaseignorar o caso dename.BindingFlags.DeclaredOnlypara procurar 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 classes (construtor estático) usando esta sobrecarga de métodos, deve especificar "construtor estático" para name, MemberTypes.Constructor para type, e BindingFlags.Static | BindingFlags.NonPublic (BindingFlags.StaticOrBindingFlags.NonPublic em Visual Basic) para bindingAttr. Também pode obter o inicializador de classes usando a TypeInitializer propriedade.
Se o current Type representa um tipo genérico construído, esse método retorna o MemberInfo com os parâmetros type substituídos pelos argumentos de tipo apropriados.
Se a corrente Type representa um parâmetro de tipo na definição de um tipo genérico ou método genérico, este método pesquisa os membros da restrição de classe, ou os membros de Object se não houver restrição de classe.
Note
Para métodos genéricos, não inclua os argumentos tipo em name. Por exemplo, o código GetMember("MyMethod<int>") C# procura um membro com o nome de texto "MyMethod<int>", em vez de um método nomeado MyMethod que tenha um argumento genérico do tipo int.
Ver também
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)