c# - 我如何找到从 C# 类方法调用的方法 - 而不是在运行时

标签 c# .net reflection dll refactoring

我有一个包含太多代码的 C# 类,我想 refactor它。我想做的是从所有 public methods 开始, 并构建一个 tree对于每一个,显示类中的哪些其他方法是从它调用的,然后是从子方法调用的,等等。

这将使我能够看到哪个 private methods只属于一个public method , 共享等。

请注意,我不想在运行时执行此操作,我希望能够直接在 .cs file 中查看类,或对编译的 DLL 使用反射.

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

有人有什么想法吗?同样,这不是运行时问题,它纯粹是为了构建一个可重用的实用程序来帮助重构超大类。我正在处理的解决方案中有很多,因此代码会被反复使用。

最佳答案

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

根据我的经验,这种静态分析可能有些欠缺,例如可以使用反射、通过数据绑定(bind)、通过依赖注入(inject)容器等动态​​调用方法。

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

关于c# - 我如何找到从 C# 类方法调用的方法 - 而不是在运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14243326/

相关文章:

c# - 嵌套 "from"用扩展方法表示的 LINQ 查询

c# - 如何以最简单的方式在 V 2010Express C# 中创建 MRU?

typescript - 提取属性名称的安全方法

c# - 获取 Type 中使用的程序集的路径

c# - 提交时在同一页面显示成功信息

c# - 来自用户浏览器的网络请求

c# - 如何确定 MethodInfo 是否是基方法的重写

java - 检查父类(super class)是否为 java.lang.Object

c# - 在 foreach 循环中等待的正确方法

.net - 递归获取 .NET Azure Active Directory 组中的所有用户