Compartir a través de


Type.GetMethods Método

Definición

Obtiene los métodos del objeto actual Type.

Sobrecargas

Nombre Description
GetMethods()

Devuelve todos los métodos públicos del objeto actual Type.

GetMethods(BindingFlags)

Cuando se reemplaza en una clase derivada, busca los métodos definidos para el objeto actual Typemediante las restricciones de enlace especificadas.

GetMethods()

Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs

Devuelve todos los métodos públicos del objeto actual Type.

public:
 cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
public:
 virtual cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
public System.Reflection.MethodInfo[] GetMethods();
public System.Reflection.MethodInfo[] GetMethods();
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)>]
member this.GetMethods : unit -> System.Reflection.MethodInfo[]
member this.GetMethods : unit -> System.Reflection.MethodInfo[]
abstract member GetMethods : unit -> System.Reflection.MethodInfo[]
override this.GetMethods : unit -> System.Reflection.MethodInfo[]
Public Function GetMethods () As MethodInfo()

Devoluciones

Matriz de objetos que MethodInfo representan todos los métodos públicos definidos para el objeto actual Type.

O bien

Matriz vacía de tipo MethodInfo, si no se define ningún método público para el objeto actual Type.

Implementaciones

Atributos

Comentarios

En .NET 6 y versiones anteriores, el método GetMethods no devuelve métodos 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 métodos, ya que ese orden varía. Sin embargo, a partir de .NET 7, el orden es determinista en función del orden de metadatos del ensamblado.

Los constructores no se incluyen en la matriz de métodos devueltos por esta llamada. Realice una llamada independiente para GetConstructors() obtener los métodos de constructor.

En la tabla siguiente se muestra qué miembros de una clase base devuelven los métodos Get al reflexionar sobre un tipo.

Tipo de miembro Estático No estático
Constructor No No
Campo No Sí. Un campo siempre se oculta según el nombre y la firma.
Event No es aplicable La regla del sistema de tipos común es que la herencia es igual a la de los métodos que implementan la propiedad. La reflexión trata las propiedades como hide-by-name-and-signature. Vea la nota 2 a continuación.
Método No Sí. Un método (tanto virtual como no virtual) puede ocultarse por nombre o por nombre y firma.
Tipo anidado No No
Propiedad No es aplicable La regla del sistema de tipos común es que la herencia es igual a la de los métodos que implementan la propiedad. La reflexión trata las propiedades como hide-by-name-and-signature. Vea la nota 2 a continuación.
  1. En ocultar por nombre y firma se tienen en cuenta todas las partes de la firma, incluidos modificadores personalizados, tipos de valor devuelto, tipos de parámetros, sentinels y convenciones de llamada no administradas. Se trata de una comparación binaria.

  2. En reflexión, las propiedades y eventos se ocultan por nombre y firma. Si tiene una propiedad con un descriptor de acceso get y set en la clase base, pero la clase derivada solo tiene un descriptor de acceso get, la propiedad de clase derivada oculta la propiedad de clase base y no podrá acceder al establecedor en la clase base.

  3. Los atributos personalizados no forman parte del sistema de tipos común.

Nota:

No se pueden omitir parámetros al buscar constructores y métodos. Solo puede omitir parámetros al invocar.

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

Si el objeto actual Type 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 métodos de la restricción de clase o en los métodos de si no hay ninguna restricción de Object clase.

Consulte también

Se aplica a

GetMethods(BindingFlags)

Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs
Source:
Type.cs

Cuando se reemplaza en una clase derivada, busca los métodos definidos para el objeto actual Typemediante las restricciones de enlace especificadas.

public:
 abstract cli::array <System::Reflection::MethodInfo ^> ^ GetMethods(System::Reflection::BindingFlags bindingAttr);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)]
public abstract System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr);
public abstract System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods)>]
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
abstract member GetMethods : System.Reflection.BindingFlags -> System.Reflection.MethodInfo[]
Public MustOverride Function GetMethods (bindingAttr As BindingFlags) As MethodInfo()

Parámetros

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 devolver una matriz vacía.

Devoluciones

Matriz de objetos que MethodInfo representan todos los métodos definidos para el actual Type que coinciden con las restricciones de enlace especificadas.

O bien

Matriz vacía de tipo MethodInfo, si no se define ningún método para el objeto actual Type, o si ninguno de los métodos definidos coincide con las restricciones de enlace.

Implementaciones

Atributos

Ejemplos

En el ejemplo siguiente se crea una clase con dos métodos públicos y un método protegido, se crea un Type objeto correspondiente a MyTypeClass, se obtienen todos los métodos públicos y no públicos y se muestran sus nombres.

using System;
using System.Reflection;
using System.Reflection.Emit;

// Create a class having two public methods and one protected method.
public class MyTypeClass
{
    public void MyMethods()
    {
    }
    public int MyMethods1()
    {
        return 3;
    }
    protected String MyMethods2()
    {
        return "hello";
    }
}
public class TypeMain
{
    public static void Main()
    {
        Type myType =(typeof(MyTypeClass));
        // Get the public methods.
        MethodInfo[] myArrayMethodInfo = myType.GetMethods(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly);
        Console.WriteLine("\nThe number of public methods is {0}.", myArrayMethodInfo.Length);
        // Display all the methods.
        DisplayMethodInfo(myArrayMethodInfo);
        // Get the nonpublic methods.
        MethodInfo[] myArrayMethodInfo1 = myType.GetMethods(BindingFlags.NonPublic|BindingFlags.Instance|BindingFlags.DeclaredOnly);
        Console.WriteLine("\nThe number of protected methods is {0}.", myArrayMethodInfo1.Length);
        // Display information for all methods.
        DisplayMethodInfo(myArrayMethodInfo1);		
    }
    public static void DisplayMethodInfo(MethodInfo[] myArrayMethodInfo)
    {
        // Display information for all methods.
        for(int i=0;i<myArrayMethodInfo.Length;i++)
        {
            MethodInfo myMethodInfo = (MethodInfo)myArrayMethodInfo[i];
            Console.WriteLine("\nThe name of the method is {0}.", myMethodInfo.Name);
        }
    }
}

Imports System.Reflection
Imports System.Reflection.Emit

' Create a class having two public methods and one protected method.
Public Class MyTypeClass
    Public Sub MyMethods()
    End Sub
    Public Function MyMethods1() As Integer
        Return 3
    End Function 'MyMethods1
    Protected Function MyMethods2() As [String]
        Return "hello"
    End Function 'MyMethods2
End Class
Public Class TypeMain
    Public Shared Sub Main()

        Dim myType As Type = GetType(MyTypeClass)
        ' Get the public methods.
        Dim myArrayMethodInfo As MethodInfo() = myType.GetMethods((BindingFlags.Public Or BindingFlags.Instance Or BindingFlags.DeclaredOnly))
        Console.WriteLine((ControlChars.Cr + "The number of public methods is " & myArrayMethodInfo.Length.ToString() & "."))
        ' Display all the public methods.
        DisplayMethodInfo(myArrayMethodInfo)
        ' Get the nonpublic methods.
        Dim myArrayMethodInfo1 As MethodInfo() = myType.GetMethods((BindingFlags.NonPublic Or BindingFlags.Instance Or BindingFlags.DeclaredOnly))
        Console.WriteLine((ControlChars.Cr + "The number of protected methods is " & myArrayMethodInfo1.Length.ToString() & "."))
        ' Display all the nonpublic methods.
        DisplayMethodInfo(myArrayMethodInfo1)
    End Sub

    Public Shared Sub DisplayMethodInfo(ByVal myArrayMethodInfo() As MethodInfo)
        ' Display information for all methods.
        Dim i As Integer
        For i = 0 To myArrayMethodInfo.Length - 1
            Dim myMethodInfo As MethodInfo = CType(myArrayMethodInfo(i), MethodInfo)
            Console.WriteLine((ControlChars.Cr + "The name of the method is " & myMethodInfo.Name & "."))
        Next i
    End Sub
End Class

Comentarios

Para que la sobrecarga recupere correctamente la GetMethods(BindingFlags) información del método, el bindingAttr argumento debe incluir al menos uno de BindingFlags.Instance y BindingFlags.Static, junto con al menos uno de BindingFlags.NonPublic y BindingFlags.Public.

Las marcas de filtro siguientes BindingFlags se pueden usar para definir qué métodos se van a incluir en la búsqueda:

  • Especifique BindingFlags.Instance para incluir métodos de instancia.

  • Especifique BindingFlags.Static para incluir métodos estáticos.

  • 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. Solo se devuelven métodos protegidos e internos en clases base; No se devuelven métodos privados en clases base.

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

  • Especifique BindingFlags.Default solo para devolver una matriz vacía MethodInfo .

Se pueden usar las marcas modificadores siguientes BindingFlags para cambiar el funcionamiento de la búsqueda:

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

Consulte System.Reflection.BindingFlags para obtener más información.

En .NET 6 y versiones anteriores, el método GetMethods no devuelve métodos 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 métodos, ya que ese orden varía. Sin embargo, a partir de .NET 7, el orden es determinista en función del orden de metadatos del ensamblado.

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

Si el objeto actual Type 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 métodos de la restricción de clase o en los métodos de si no hay ninguna restricción de Object clase.

Consulte también

Se aplica a