コール フローの決定について考えるときに最初に頭に浮かぶのは、コール スタックをチェックすることです。しかし、スタック フレームをチェックしても、現在の呼び出し階層しか得られず、以前の呼び出し階層はわかりません。つまり、C3 でスタックフレームをチェックしても、A が B を呼び出した履歴がないため、これは機能しません。
これは、呼び出された各メソッドも何らかの形でこの目標の達成に参加する必要があることを意味します。各メソッドは、呼び出し元がフローを追跡することを望んでいることを何らかの方法で判断する必要があり、必要な情報の提供に貢献する必要があります。しかし、呼び出し可能な各メソッドにコードを追加するのはばかげています。
これを行う別の方法は、各メソッド呼び出しをインターセプトできる人にこれを委任し、呼び出し元がフローを追跡する必要があるかどうかを確認し、後でアクセスできる必要な情報をログに記録することです。これこそまさに、アスペクト指向プログラミング (AOP)の出番だと私が考えるところです。.Net で AOP を使用するには、PostSharp をご覧ください。時間があれば、いくつかのコード サンプルを試してみますが、今のところ、次の URL を参照することしかできません: http://www.postsharp.net
これが役立つことを願っています。