2009-07-29 90 views
12

我想要生成類或類的所有方法的列表。我也需要他們的返回類型。輸出到一個文本文件將做...有誰知道一個工具,VS接觸或什麼將執行任務?我使用C#代碼的方式和Visual Studio 2008作爲IDE生成帶方法類型的類的方法列表

+0

你有源代碼(.cs)或編譯的程序集嗎?有很大的區別... – 2009-07-29 06:51:41

+0

類的目錄表明它的代碼...使事情變得複雜 – 2009-07-29 06:58:27

回答

31

當然 - 使用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) 

(ETC)

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