2013-03-12 108 views
0

我有一個要求,列出了cs文件中的方法,並列出方法中的每個方法調用。 例如:我有一個類有沒有什麼辦法可以通過cs文件搜索

public void method1() 
{ 
    c2.M2(); 
} 

public void method2() 
{ 
    c2.m3(); 
} 

這裏C2是另一個類和m2立方米是類的方法。在這裏我需要準備一個列表c2.m2()和c2.m3(),我有一百個或更多的cs文件列出這些細節。

有什麼辦法可以有效地導航通過CSV文件和搜索,而不是加載它們和處理文件流讀者?得到的

+0

檢出System.Reflection命名空間。 – 2013-03-12 06:09:08

+0

@PieterGeerkens,可能是我沒有正確構思我的問題,通過反射,我們可以列出類中的方法,但不是方法體內容,我試圖列出方法調用裏面的方法 – ansar 2013-04-01 04:48:37

+0

有人可以回答這個問題 – ansar 2013-04-01 05:22:12

回答

1

兩種不同的方式,你在找什麼:

  • Mono.Cecil着眼於編譯的程序集(如反射和/或ILDASM),讓你檢查方法體中的IL指令。
  • Roslyn查看.cs源文件,併爲您提供解析樹。

任何一個人都應該讓你列出在每個方法中進行的調用。

+0

嗨,使用Mono.Cecil它是行貨版本,必須購買,即使我已經嘗試過使用示例代碼,我可以提取方法的c#格式,但不能在方法內部調用方法列表,如果必須提取方法代碼我可以使用這一個,但不幸的是我有cs文件需要列出方法調用。如果你有一個使用Cecil的方法在列表中列出一個方法的示例代碼,將會非常有幫助 – ansar 2013-04-03 12:15:35

+0

我不知道你在哪裏得到Mono.Cecil需要購買的想法 - 它是開源的(他們的網站不支持) t似乎提到了許可證,但您可以在源文件中的[license header](https://github.com/jbevain/cecil/blob/master/Mono.Cecil/ArrayType.cs)中看到它;它是[MIT許可證](http://opensource.org/licenses/MIT))。關於如何使用Cecil,請嘗試從[Cecil FAQ](http://www.mono-project.com/Cecil:FAQ)和[StackOverflow上的'mono.cecil'標記](http:// stackoverflow .COM /問題/標記/ Mono.Cecil能)。 – 2013-04-07 02:37:27

+0

對不起,我誤解了反射器和Mono.cecil之間的工具,謝謝你的回覆,我已經看到了代碼,但沒有發現任何有用的我的需求,我需要列出類中的方法調用的方法,但通過這個單聲道.cecil我能夠提取說明。請提供一些幫助。我可以得到有關Nunit框架的任何幫助嗎?.. – ansar 2013-04-08 10:00:38

相關問題