Deseo generar una lista de todos los métodos en una clase o en un directorio de clases. También necesito sus tipos de devolución. Emitirlo a un archivo de texto servirá ... ¿Alguien sabe de una herramienta, un complemento para VS o algo que hará la tarea? Estoy usando códigos C# por cierto y Visual Studio 2008 como IDEGenerar Lista de métodos de una clase con tipos de método
Respuesta
Sure - use Type.GetMethods(). Usted querrá especificar diferentes banderas de unión para conseguir métodos no públicos, etc. Este es un crudo bonita, pero el punto de partida viable:
using System;
using System.Linq;
class Test
{
static void Main()
{
ShowMethods(typeof(DateTime));
}
static void ShowMethods(Type type)
{
foreach (var method in type.GetMethods())
{
var parameters = method.GetParameters();
var parameterDescriptions = string.Join
(", ", method.GetParameters()
.Select(x => x.ParameterType + " " + x.Name)
.ToArray());
Console.WriteLine("{0} {1} ({2})",
method.ReturnType,
method.Name,
parameterDescriptions);
}
}
}
Salida:
System.DateTime Add (System.TimeSpan value)
System.DateTime AddDays (System.Double value)
System.DateTime AddHours (System.Double value)
System.DateTime AddMilliseconds (System.Double value)
System.DateTime AddMinutes (System.Double value)
System.DateTime AddMonths (System.Int32 months)
System.DateTime AddSeconds (System.Double value)
System.DateTime AddTicks (System.Int64 value)
System.DateTime AddYears (System.Int32 value)
System.Int32 Compare (System.DateTime t1, System.DateTime t2)
System.Int32 CompareTo (System.Object value)
System.Int32 CompareTo (System.DateTime value)
System.Int32 DaysInMonth (System.Int32 year, System.Int32 month)
(etc)
Fuera de interés, ¿devuelve todos los métodos del tipo actual o también incluye todos los métodos públicos de sus clases principales? –
@ LoïcFaure-Lacroix: Hay una manera muy fácil de probarlo :) (No recuerdo bien, pero es fácil de probar ...) –
bien, hice algunas pruebas. Estoy bastante seguro de que muestra todos los métodos públicos. Sin embargo, parece haber un atributo "DeclaringType" que parece ser el tipo que declaró el método. Entonces, si alguien quiere filtrar un objeto particular en la jerarquía, debería ser posible. –
Puede acceder a estas listas muy fácilmente con la reflexión. p.ej. con Type.GetMethods()
using (StreamWriter sw = new StreamWriter("C:/methods.txt"))
{
foreach (MethodInfo item in typeof(MyType).GetMethods())
{
sw.WriteLine(item.Name);
}
}
- 1. programación generar métodos para una clase
- 2. Generar métodos con tipos genéricos con generador de códigos de bytes Asm (ClassWriter)
- 3. Obtener la lista de métodos de una clase
- 4. Método de sobrecarga con los tipos C#
- 5. Generar automáticamente implementaciones de métodos de clase base
- 6. ¿Almacena diferentes tipos dentro de una lista?
- 7. iterando sobre una lista de tipos
- 8. Generar método personalizado adicional con jaxb-xjc
- 9. Generar métodos de delegado para una propiedad visible de una clase padre
- 10. Prueba de una clase con una dependencia clase estática/método
- 11. Delegando métodos de instancia al método de clase
- 12. ¿Cómo extiendo una clase con los métodos de extensión C#?
- 13. Tipos de pato de documento con varios métodos en YARD
- 14. Almacenar una lista de métodos en C#
- 15. Declarar una lista de tipos de
- 16. Métodos privados en una clase de Mootools
- 17. Tipos de métodos dependientes y clases de tipos
- 18. Generar tabla HTML de la lista de clase genérica con propiedades especificadas
- 19. Sustitución de métodos de una clase padre
- 20. ¿Puedo usar métodos de una clase sin instanciar esta clase?
- 21. Generar una nueva lista con la tecla
- 22. Generar permutaciones de lista con elementos repetidos
- 23. Método y simulacro con una misma clase
- 24. Cómo generar una clase desde una interfaz
- 25. Eclipse IDE. Vea la lista de todos los métodos heredados de una clase
- 26. ¿Cómo generar una lista de números aleatorios?
- 27. ¿Cómo inicializar un objeto con una lista de diferentes tipos?
- 28. Identificación de tipos derivados de una lista de objetos de la clase base
- 29. Diferencia de nivel bajo: clase no estática con método estático vs. clase estática con método estático
- 30. ¿Lista de diferentes tipos?
¿Tiene fuente (.cs) o ensamblajes compilados? Hay una gran diferencia ... –
El directorio de clases sugiere que su código ... eso complica las cosas un poco –
no, complica mucho las cosas ;-p –