【发布时间】:2013-01-09 17:49:25
【问题描述】:
我有一个包含太多代码的 C# 类,我想refactor 它。我想做的是从所有public methods 开始,为每个tree 构建一个tree,显示类中的哪些其他方法是从中调用的,然后是从子类中调用的方法,依此类推.
这将使我能够看到哪些private methods 完全属于一个public method,哪些是共享的等等。
请注意,我不想在运行时执行此操作,我希望能够直接查看 .cs file 或在编译后的 DLL 上使用反射。
我知道我可以在编译后的 DLL 上使用反射来获取方法,但我找不到任何方法来找出类中的其他方法调用了哪些方法。
有人有什么想法吗?同样,这不是运行时问题,它纯粹是为了构建一个可重用的实用程序来帮助重构一个超大的类。我正在研究的解决方案中有很多,所以代码会被反复使用。
【问题讨论】:
-
Resharper 有这个。它将向您展示一个方法的所有用法。
-
方法右键->“查看调用层次结构”?
-
如果你想自己动手:stackoverflow.com/a/5741770/16959 这是关于这个主题的一个经过充分研究的答案
-
Oded 和 unicron - 感谢您的回复,但我已经知道调用层次结构。但是,除非我错过了什么,否则它们只允许您查看当前方法调用的方法。然后,您需要遍历每个调用的方法并对它们中的每一个执行相同的操作。您还需要在进行过程中跟踪所有这些。这很快就会变得非常痛苦并且容易出错。我正在寻找一种自动生成完整层次结构的方法。如果 R# 或 VS 的功能可以做到这一点,那么请告诉我怎么做,因为我认为他们做不到。
-
Jason - 感谢您的链接,这看起来很棒。我还没有尝试过,因为它看起来需要一些认真的研究,但如果它和它看起来一样好,它应该完全符合我的要求。再次感谢。
标签: c# .net reflection dll refactoring