Type.GetMethods 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 métodos del objeto Type actual.
Sobrecargas
GetMethods(BindingFlags) |
Cuando se invalida en una clase derivada, busca los métodos definidos para el objeto Type actual y aplica las restricciones de enlace especificadas. |
GetMethods() |
Devuelve todos los métodos públicos del objeto Type actual. |
GetMethods(BindingFlags)
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
Cuando se invalida en una clase derivada, busca los métodos definidos para el objeto Type actual y aplica las restricciones de enlace especificadas.
public:
abstract cli::array <System::Reflection::MethodInfo ^> ^ GetMethods(System::Reflection::BindingFlags bindingAttr);
public abstract System.Reflection.MethodInfo[] GetMethods (System.Reflection.BindingFlags bindingAttr);
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 que se devuelva una matriz vacía.
Devoluciones
Matriz de objetos MethodInfo que representa todos los métodos definidos para el objeto Type actual que coincidan con las restricciones de enlace especificadas.
O bien
Matriz vacía de tipo MethodInfo si no se han definido métodos para el objeto Type actual o si ninguno de los métodos definidos coincide con las restricciones de enlace.
Implementaciones
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 namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
// Create a class having two public methods and one protected method.
public ref class MyTypeClass
{
public:
void MyMethods(){}
int MyMethods1()
{
return 3;
}
protected:
String^ MyMethods2()
{
return "hello";
}
};
void DisplayMethodInfo( array<MethodInfo^>^myArrayMethodInfo )
{
// Display information for all methods.
for ( int i = 0; i < myArrayMethodInfo->Length; i++ )
{
MethodInfo^ myMethodInfo = dynamic_cast<MethodInfo^>(myArrayMethodInfo[ i ]);
Console::WriteLine( "\nThe name of the method is {0}.", myMethodInfo->Name );
}
}
int main()
{
Type^ myType = MyTypeClass::typeid;
// Get the public methods.
array<MethodInfo^>^myArrayMethodInfo = myType->GetMethods( static_cast<BindingFlags>(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.
array<MethodInfo^>^myArrayMethodInfo1 = myType->GetMethods( static_cast<BindingFlags>(BindingFlags::NonPublic | BindingFlags::Instance | BindingFlags::DeclaredOnly) );
Console::WriteLine( "\nThe number of protected methods is {0}->", myArrayMethodInfo1->Length );
// Display information for all methods.
DisplayMethodInfo( myArrayMethodInfo1 );
}
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
que incluya 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 yprotected
miembrospublic
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 , Typeno los métodos que simplemente se heredaron.
Vea System.Reflection.BindingFlags para obtener más información.
En .NET 6 y versiones anteriores, el GetMethods método no devuelve métodos en un orden determinado, como orden alfabético o de declaración. El código no debe depender del orden en 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
- MethodInfo
- BindingFlags
- DefaultBinder
- GetMethod(String, BindingFlags, Binder, CallingConventions, Type[], ParameterModifier[])
Se aplica a
GetMethods()
- Source:
- Type.cs
- Source:
- Type.cs
- Source:
- Type.cs
Devuelve todos los métodos públicos del objeto Type actual.
public:
cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
public:
virtual cli::array <System::Reflection::MethodInfo ^> ^ GetMethods();
public System.Reflection.MethodInfo[] GetMethods ();
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 MethodInfo que representa todos los métodos públicos definidos para el objeto Type actual.
O bien
Matriz vacía de tipo MethodInfo si no hay métodos públicos definidos para el objeto Type actual.
Implementaciones
Comentarios
En .NET 6 y versiones anteriores, el GetMethods método no devuelve métodos en un orden determinado, como orden alfabético o de declaración. El código no debe depender del orden en 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 Get
métodos al reflejar en un tipo.
Tipo de miembro | Estático | No estático |
---|---|---|
Constructor | No | No |
Campo | No | Sí. Un campo siempre está ocultado por nombre y firma. |
evento | No es aplicable | La regla del sistema de tipos común 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 (tanto virtual como no virtual) puede ocultarse por nombre u ocultar 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 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. |
Hide-by-name-and-signature tiene 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.
En el caso de la reflexión, las propiedades y los eventos son hide-by-name-and-signature. Si tiene una propiedad con un descriptor de acceso get y un 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.
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 se pueden 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.