2013-03-12 100 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

相关问题