Подтвердить что ты не робот

Создать список методов класса с типами методов

Я хочу сгенерировать список всех методов в классе или в каталоге классов. Мне также нужны их типы возврата. Вывод его в текстовый файл будет... Кто-нибудь знает инструмент, привязку для VS или что-то, что сделает задачу? Я использую коды С#, кстати, и Visual Studio 2008 как IDE

4b9b3361

Ответ 1

Конечно - используйте Type.GetMethods(). Вы хотите указать разные флаги привязки для получения непубличных методов и т.д. Это довольно грубая, но работоспособная отправная точка:

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);
        }
    }
}

Вывод:

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)

(и т.д.)

Ответ 2

Вы можете легко получить эти списки с отражением. например с Type.GetMethods()

Ответ 3

using (StreamWriter sw = new StreamWriter("C:/methods.txt"))
{
      foreach (MethodInfo item in typeof(MyType).GetMethods())
      {
            sw.WriteLine(item.Name);
      } 
}