C#代码列出了从启动方法调用的所有方法?

Nam*_* VU 6 c# methods

假设我们有methodA()调用methodB()和methodC().

在methodB()中,我们调用methodB1()和methodB2().

在methodC()中,我们调用methodC1(),methodC2()和methodC3().

所以最后我们有方法树

了methodA

的methodB

methodB1

methodB2

methodC

methodC1

methodC2

methodC3

是否可以通过C#代码获得此列表?

Vin*_*Y S 2

当我们考虑确定调用流程时,我们首先想到的是检查调用堆栈。但是检查堆栈帧只能给我们当前的调用层次结构,而不能提供前一个调用层次结构。即使你检查C3中的堆栈帧,它也不会有A调用B的历史记录。所以这是行不通的。

这意味着每个被调用的方法也需要以某种方式参与实现这一目标。每个方法都必须以某种方式确定调用者想要跟踪流,并且必须有助于提供所需的信息。但是在每个可能调用的方法中添加一些代码是很荒谬的。

另一种方法是将其委托给可以拦截每个方法调用的人,检查调用者是否想要跟踪流程并记录稍后可以访问的所需信息。我认为这正是面向方面编程(AOP)的用武之地。要在 .Net 中使用 AOP,请查看 PostSharp。如果我有时间,我会尝试提供一些代码示例,但现在我只能向您指出这个网址: http: //www.postsharp.net

我希望这有帮助。