Я все еще пытаюсь заставить мое правило FxCop работать.
В рамках этого мне нужно работать какие методы вызывает метод. Раньше я использовал CallGraph.CallersFor ()
(делая это в обратном порядке, что в любом случае является моей конечной целью), однако, похоже, возникла та же проблема, которую я описываю ниже.
В качестве альтернативы использованию класса CallGraph
я попытался посетить все вызовы методов для создания словаря на основе этого кода:
public override void VisitMethodCall(MethodCall call)
{
Method CalledMethod = (call.Callee as MemberBinding).BoundMember as Method;
// ....
}
Однако оказалось, что если вызываемый метод находится в производном классе, который переопределяет метод базового класса, тогда BoundMember
является методом базового класса, а не методом дочернего класса (который будет фактически вызван).
Вопрос: Как можно я получаю метод, который будет вызываться в случае инструкции callvirt IL в FxCop?