Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Type.GetMethod (Método) (String, BindingFlags, Binder, Type[], ParameterModifier[])

Busca el método especificado cuyos parámetros coincidan con los tipos y modificadores de argumentos especificados, mediante las restricciones de enlace indicadas.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

public MethodInfo GetMethod(
	string name,
	BindingFlags bindingAttr,
	Binder binder,
	Type[] types,
	ParameterModifier[] modifiers
)

Parámetros

name
Tipo: System.String
Cadena que contiene el nombre del método que se va a obtener.
bindingAttr
Tipo: System.Reflection.BindingFlags
Máscara de bits formada por una o varias enumeraciones BindingFlags que especifican la forma en que se realiza la búsqueda.
O bien
Cero, para devolver null.
binder
Tipo: System.Reflection.Binder
Objeto que define un conjunto de propiedades y permite realizar operaciones de enlace que pueden incluir la selección de un método sobrecargado, la coerción de tipos de argumentos y la invocación de un miembro mediante reflexión.
O bien
Referencia nula (Nothing en Visual Basic) para usar la propiedad DefaultBinder.
types
Tipo: System.Type[]
Matriz de objetos Type que representa el número, el orden y el tipo de parámetros que el método debe obtener.
O bien
Una matriz vacía de objetos Type (proporcionados por el campo EmptyTypes) para obtener un método que no requiera parámetros.
modifiers
Tipo: System.Reflection.ParameterModifier[]
Matriz de objetos ParameterModifier que representan los atributos asociados al elemento correspondiente de la matriz types. Solo se ha de utilizar cuando se llama mediante la interoperabilidad COM y solo se controlan parámetros que se pasan por referencia. El enlazador predeterminado no procesa este parámetro.

Valor devuelto

Tipo: System.Reflection.MethodInfo
Objeto que representa el método que cumple los requisitos especificados, si se encuentra; en caso contrario, es null.

Implementaciones

_Type.GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[])
IReflect.GetMethod(String, BindingFlags, Binder, Type[], ParameterModifier[])

ExcepciónCondición
AmbiguousMatchException

Hay varios métodos con el nombre especificado que coinciden con las restricciones de enlace especificadas.

ArgumentNullException

name es null.

O bien

types es null.

O bien

Uno de los elementos de types es null.

ArgumentException

types es multidimensional.

O bien

modifiers es multidimensional.

Aunque el enlazador predeterminado no procesa ParameterModifier (el parámetro modifiers), se puede utilizar la clase abstracta System.Reflection.Binder para escribir un enlazador predeterminado que procese modifiers. ParameterModifier se utiliza únicamente cuando se llama a través de la interoperabilidad COM y solo se controlan los parámetros que se pasan por referencia.

Las siguientes marcas de filtro BindingFlags pueden utilizarse para definir los métodos que van a incluirse en la búsqueda:

  • Especifique BindingFlags.Instance o BindingFlags.Static para obtener un valor devuelto.

  • Especifique BindingFlags.Public para incluir métodos públicos en la búsqueda.

  • Especifique BindingFlags.NonPublic para incluir métodos no públicos (es decir, métodos privados, internos y protegidos) en la búsqueda.

  • Especifique BindingFlags.FlattenHierarchy para incluir los miembros estáticos public y protected en la jerarquía; no se incluyen los miembros estáticos private de las clases heredadas.

Las siguientes marcas de modificación BindingFlags pueden utilizarse para cambiar la forma en que se lleva a cabo la búsqueda:

  • BindingFlags.IgnoreCase para pasar por alto la distinción entre mayúsculas y minúsculas de name.

  • BindingFlags.DeclaredOnly para buscar solo los métodos declarados en Type, no los métodos simplemente heredados.

Para obtener más información, vea System.Reflection.BindingFlags.

NotaNota

No se pueden omitir parámetros cuando se consultan constructores y métodos. Solo se pueden omitir parámetros al realizar llamadas.

Si el objeto T:System.Type actual representa un tipo genérico construido, este método devuelve el objeto MethodInfo con los parámetros de tipo sustituidos por los argumentos de tipo adecuados.

Si el objeto Type actual representa un parámetro de tipo en la definición de un tipo genérico o de un método genérico, este método busca los métodos de la restricción de clase o los de Object si dicha restricción de clase no existe.

NotaNota

Para métodos genéricos, no incluya los argumentos de tipo en name. Por ejemplo, el código de C# GetMember("MyMethod<int>") busca un miembro con el nombre de texto "MyMethod<int>", en lugar de un método denominado MyMethod que tiene un argumento genérico de tipo int.

En el ejemplo siguiente se buscan sobrecargas concretas de MethodA, especificando restricciones de enlace y diversos tipos de argumento.

NotaNota

El ejemplo Visual C# 2005 requiere la opción de compilador /unsafe.



using System;
using System.Reflection;

class Program
{
    // Methods to get:

    public void MethodA(int i, int j) { }

    public void MethodA(int[] i) { }

    public unsafe void MethodA(int* i) { }


    public void MethodA(ref int r) {}

    // Method that takes an out parameter.
    public void MethodA(int i, out int o) { o = 100; }


  static void Main(string[] args)
  {
    MethodInfo mInfo;

    // Get MethodA(int i, int j)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        new Type[] { typeof(int), typeof(int) },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(int[] i)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        new Type[] { typeof(int[]) },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(int* i)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        new Type[] { typeof(int).MakePointerType() },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(ref int r)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        new Type[] { typeof(int).MakeByRefType() },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

    // Get MethodA(int i, out int o)
    mInfo = typeof(Program).GetMethod("MethodA",
        BindingFlags.Public | BindingFlags.Instance,
        null,
        new Type[] { typeof(int), typeof(int).MakeByRefType() },
        null);
    Console.WriteLine("Found method: {0}", mInfo);

  }
}


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft