Type.GetMember Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene los miembros especificados del objeto Type actual.
Sobrecargas
GetMember(String) |
Busca los miembros públicos con el nombre especificado. |
GetMember(String, BindingFlags) |
Busca los miembros especificados mediante las restricciones de enlace especificadas. |
GetMember(String, MemberTypes, BindingFlags) |
Busca los miembros especificados que sean del tipo de miembro especificado mediante las restricciones de enlace especificadas. |
GetMember(String)
Busca los miembros públicos con el nombre 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
Cadena que contiene el nombre de los miembros públicos que se van a obtener.
Devoluciones
Matriz de objetos MemberInfo que representa los miembros públicos con el nombre especificado, si se encuentran; de lo contrario, una matriz vacía.
Implementaciones
Excepciones
name
es null
.
Ejemplos
En el ejemplo siguiente se muestran todos los miembros de String
la clase que comienzan por la 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
Comentarios
La búsqueda de name
distingue mayúsculas de minúsculas. La búsqueda incluye miembros de instancia públicos y estáticos.
Los miembros incluyen propiedades, métodos, campos, eventos, entre otros.
El GetMember método no devuelve miembros en un orden determinado, como el orden alfabético o de declaración. El código no debe depender del orden en el que se devuelven los miembros, ya que ese orden varía.
Esta sobrecarga del método no encontrará inicializadores de clase (constructor estático). Para buscar inicializadores de clase, use una sobrecarga que tome y especifique BindingFlags BindingFlags.Static | ( en BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic). También puede obtener el inicializador de clase mediante la TypeInitializer propiedad .
En la tabla siguiente se muestra qué miembros de una clase base devuelven los métodos Get
al reflejar en un tipo.
Tipo de miembro | Estático | No estático |
---|---|---|
Constructor | No | No |
Campo | No | Sí. Un campo siempre se oculta por nombre y firma. |
evento | No es aplicable | La regla común del sistema de tipos es que la herencia es la misma que la de los métodos que implementan la propiedad . La reflexión trata las propiedades como hide-by-name-and-signature. Consulte la nota 2 a continuación. |
Método | No | Sí. Un método (virtual y no virtual) puede ser hide-by-name u hide-by-name-and-signature. |
Tipo anidado | No | No |
Propiedad. | No es aplicable | La regla común del sistema de tipos es que la herencia es la misma que la de los métodos que implementan la propiedad . La reflexión trata las propiedades como hide-by-name-and-signature. Consulte la nota 2 a continuación. |
Ocultar por nombre y firma tiene en cuenta todas las partes de la firma, incluidos los modificadores personalizados, los tipos de valor devuelto, los tipos de parámetros, los centinelas y las convenciones de llamada no administradas. Se trata de una comparación binaria.
Para la reflexión, las propiedades y los eventos se ocultan por nombre y firma. Si tiene una propiedad con un accessor get y set en la clase base, pero la clase derivada solo tiene un accessor get, la propiedad de clase derivada oculta la propiedad de clase base y no podrá acceder al establecedor en la clase base.
Los atributos personalizados no forman parte del sistema de tipos común.
Si el objeto actual representa un tipo genérico construido, este método devuelve con los parámetros de tipo Type MemberInfo reemplazados por los argumentos de tipo adecuados.
Si el objeto actual representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método busca en los miembros de la restricción de clase o en los miembros de si no hay ninguna restricción Type Object de clase.
Nota
Para los métodos genéricos, no incluya los argumentos de tipo en name
. Por ejemplo, el código de C# busca un miembro con el nombre de texto " ", en lugar de un método denominado que tiene un argumento GetMember("MyMethod<int>")
MyMethod<int>
genérico de tipo MyMethod
int
.
Consulte también
- MemberInfo
- String
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Se aplica a
GetMember(String, BindingFlags)
Busca los miembros especificados mediante las restricciones de enlace 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
Cadena que contiene el nombre de los miembros que se van a obtener.
- bindingAttr
- BindingFlags
Combinación bit a bit de los valores de enumeración que especifican cómo se realiza la búsqueda.
O bien Default para que se devuelva una matriz vacía.
Devoluciones
Matriz de objetos MemberInfo que representa los miembros públicos con el nombre especificado, si se encuentran; de lo contrario, una matriz vacía.
Implementaciones
Excepciones
name
es null
.
Ejemplos
En el ejemplo siguiente se muestran todos los miembros estáticos públicos de la myString
clase que comienzan con la 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
Comentarios
Una clase derivada puede invalidar este método.
Los miembros incluyen propiedades, métodos, campos, eventos, entre otros.
El GetMember método no devuelve miembros en un orden determinado, como el orden alfabético o de declaración. El código no debe depender del orden en el que se devuelven los miembros, ya que ese orden varía.
Las siguientes marcas de filtro se pueden usar para definir los miembros que BindingFlags se incluirán en la búsqueda:
Debe especificar o
BindingFlags.Instance
BindingFlags.Static
para obtener una devolución.Especifique
BindingFlags.Public
para incluir miembros públicos en la búsqueda.Especifique
BindingFlags.NonPublic
para incluir miembros no públicos (es decir, miembros privados, internos y protegidos) en la búsqueda.Especifique para incluir los miembros estáticos y en la jerarquía; no se incluyen los miembros estáticos de
BindingFlags.FlattenHierarchy
public
las clasesprotected
private
heredadas.
Se pueden BindingFlags usar las siguientes marcas modificadoras para cambiar el funcionamiento de la búsqueda:
BindingFlags.IgnoreCase
para pasar por alto el caso dename
.BindingFlags.DeclaredOnly
para buscar solo los miembros declarados en Type , no los miembros que simplemente se heredaron.
Vea System.Reflection.BindingFlags para obtener más información.
Para obtener el inicializador de clase (constructor estático) mediante esta sobrecarga de método, debe especificar "constructor estático" para y | name
BindingFlags.Static ( en BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) para bindingAttr
. También puede obtener el inicializador de clase mediante la TypeInitializer propiedad .
Si el objeto actual representa un tipo genérico construido, este método devuelve con los parámetros de tipo Type MemberInfo reemplazados por los argumentos de tipo adecuados.
Si el objeto actual representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método busca en los miembros de la restricción de clase o en los miembros de si no hay ninguna restricción Type Object de clase.
Nota
Para los métodos genéricos, no incluya los argumentos de tipo en name
. Por ejemplo, el código de C# busca un miembro con el nombre de texto " ", en lugar de un método denominado que tiene un argumento GetMember("MyMethod<int>")
MyMethod<int>
genérico de tipo MyMethod
int
.
Consulte también
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)
Se aplica a
GetMember(String, MemberTypes, BindingFlags)
Busca los miembros especificados que sean del tipo de miembro especificado mediante las restricciones de enlace 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
Cadena que contiene el nombre de los miembros que se van a obtener.
- type
- MemberTypes
Valor que se va a buscar.
- bindingAttr
- BindingFlags
Combinación bit a bit de los valores de enumeración que especifican cómo se realiza la búsqueda.
O bien Default para que se devuelva una matriz vacía.
Devoluciones
Matriz de objetos MemberInfo que representa los miembros públicos con el nombre especificado, si se encuentran; de lo contrario, una matriz vacía.
Implementaciones
Excepciones
name
es null
.
La clase derivada debe proporcionar una implementación.
Ejemplos
En el ejemplo siguiente se muestran todos los métodos de myString
la clase que comienzan con la 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
Comentarios
Los miembros incluyen propiedades, métodos, campos, eventos, entre otros.
El GetMember método no devuelve miembros en un orden determinado, como el orden alfabético o de declaración. El código no debe depender del orden en el que se devuelven los miembros, ya que ese orden varía.
Las siguientes marcas de filtro se pueden usar para definir los miembros que BindingFlags se incluirán en la búsqueda:
Debe especificar o
BindingFlags.Instance
BindingFlags.Static
para obtener una devolución.Especifique
BindingFlags.Public
para incluir miembros públicos en la búsqueda.Especifique
BindingFlags.NonPublic
para incluir miembros no públicos (es decir, miembros privados, internos y protegidos) en la búsqueda.Especifique para incluir los miembros estáticos y en la jerarquía; no se incluyen los miembros estáticos de
BindingFlags.FlattenHierarchy
public
las clasesprotected
private
heredadas.
Se pueden BindingFlags usar las siguientes marcas modificadoras para cambiar el funcionamiento de la búsqueda:
BindingFlags.IgnoreCase
para pasar por alto el caso dename
.BindingFlags.DeclaredOnly
para buscar solo los miembros declarados en Type , no los miembros que simplemente se heredaron.
Vea System.Reflection.BindingFlags para obtener más información.
Para obtener el inicializador de clase (constructor estático) mediante esta sobrecarga de método, debe especificar "constructor estático" para , para name
y | ( MemberTypes.Constructor en type
BindingFlags.Static BindingFlags.NonPublic BindingFlags.Static Or
BindingFlags.NonPublic Visual Basic) para bindingAttr
. También puede obtener el inicializador de clase mediante la TypeInitializer propiedad .
Si el objeto actual representa un tipo genérico construido, este método devuelve con los parámetros de tipo Type MemberInfo reemplazados por los argumentos de tipo adecuados.
Si el objeto actual representa un parámetro de tipo en la definición de un tipo genérico o un método genérico, este método busca en los miembros de la restricción de clase o en los miembros de si no hay ninguna restricción Type Object de clase.
Nota
Para los métodos genéricos, no incluya los argumentos de tipo en name
. Por ejemplo, el código de C# busca un miembro con el nombre de texto " ", en lugar de un método denominado que tiene un argumento GetMember("MyMethod<int>")
MyMethod<int>
genérico de tipo MyMethod
int
.
Consulte también
- MemberInfo
- String
- BindingFlags
- DefaultBinder
- GetMembers()
- GetDefaultMembers()
- FindMembers(MemberTypes, BindingFlags, MemberFilter, Object)