【发布时间】:2011-06-23 12:43:52
【问题描述】:
我仍在努力让我的 FxCop 规则发挥作用。
作为其中的一部分,我需要弄清楚一个方法调用了哪些方法。以前我使用的是CallGraph.CallersFor()(反过来,这是我的最终目标),但它似乎有我在下面描述的相同问题。
作为使用 CallGraph 类的替代方法,我尝试访问所有方法调用以构建字典,基于此代码:
public override void VisitMethodCall(MethodCall call)
{
Method CalledMethod = (call.Callee as MemberBinding).BoundMember as Method;
// ....
}
然而,事实证明,如果被调用的方法位于覆盖基类方法的派生类上,那么BoundMember 是基类的方法,而不是子类的方法(即实际上会被调用)。
问题:在 FxCop 中的 callvirt IL 指令的情况下,如何获取将被调用的方法?
【问题讨论】:
标签: c# inheritance fxcop