如何从C#类方法中找到调用哪些方法 - 而不是在运行时

时间:2013-01-09 17:49:26

标签: c# .net reflection dll refactoring

我有一个C#类,代码太多了,我希望refactor。我想要做的是从所有public methods开始,并为每个tree构建一个private methods,显示从中调用类中的其他方法,然后从子项中调用哪些方法等等。

这样我就可以看到哪个public method仅属于一个.cs file,哪些是共享的等等。

请注意,我不想在运行时执行此操作,我希望能够直接在DLL或使用编译的{{1}}上的反射来查看类。

我知道我可以在编译的DLL上使用反射来获取方法,但我找不到任何方法来找出类中其他方法调用的方法。

任何想法?同样,这不是运行时问题,它纯粹是为了构建一个可重用的实用程序来帮助重构超大类。我正在研究的解决方案中有很多,所以代码可以反复使用。

1 个答案:

答案 0 :(得分:10)

Visual Studio 2010具有“查看调用层次结构”操作,您可以在其中查看解决方案中调用代码的所有位置。

根据我的经验,这种静态分析可能有些缺乏,例如可以使用Reflection,数据绑定,依赖注入容器等动态​​调用方法。

此外,这可能有点偏离主题,并不适用于您的情况,但我发现找到组件的死代码的好方法是进行一套集成测试。然后,您可以运行代码覆盖,并直观地查看从不执行的代码路径。