.net - 在反射中可以找到从一个类到另一个类的所有方法调用?

  显示原文与译文双语对照的内容
0 0

我想在一个类中找到所有的方法调用,这些调用在另一个类上进行。

例如:

如果class1调用 class2.Foo() 但不是 class2.Bar(),那么我想知道它。

就像对耦合的分析。 这是否有可能?

时间: 原作者:

0 0

这是可能的,因为它是由几个 ide ( 至少对于 Java ) 完成的。 在任何情况下,你都可能有部分erreneous分析。 在编译时很难确定在派生类中存在方法重写时调用的方法。

不,反射是不可能的。 你需要 static 代码分析来计算耦合度量。

原作者:
0 0

不,反射是关于类型,而不是代码。 使用 System.Reflection 可以了解什么是类型所需的任何内容: 字段,属性,事件,方法。但是,方法调用被编码为 IL 。 反射在那里,你所得到的就是 MethodInfo.GetMethodBody() 。

这并没有停止一些人,你可以通过方法来解释IL交给你。 闪亮的灯光有 Lutz Roeder和他出色的反光工具。 我知道. NET 框架实际上是如何工作的,以及我如何利用自己的优势,被提交到一个银色的盘片上。 非常棒,给他一个奖章。 MSFT跟着参考源 following 。

原作者:
0 0

你不说这是在代码中,还是作为工具。 在代码中,你需要检查类的IL 。

对于实用程序,可以尝试反射器或者 ncover ( 不知道我的名字是否正确) 。 反射器有一个接口,所以你可以做一些事情

原作者:
...