メソッドがインライン化される可能性があります。それを防ぐための属性があります(「そのための属性があります」)。ただし、JITter ( http://www.hanselman.com/blog/ReleaseISNOTDebug64bitOptimizationsAndCMethodInliningInReleaseBuildCallStacks.aspx ) による末尾呼び出しの最適化が原因で、メソッドが x64 で独自のスタック フレームを取得しない場合もあります。これは の動作に影響しますMethodBase.GetCurrentMethod
か?
私が見つけることができる議論は、主にインライン化に関するものです (メソッドが CLR によってインライン化されるのはいつですか? )。これらの議論はそれ自体興味深いものですが、私の問題は実際MethodBase.GetCurrentMethod
には、プログラマーが呼び出しを行った同じメソッドを識別するためにどのような状況 (もしあれば) に依存できるかということです (たとえば、現在のメソッドは実際にはサロゲートです)。インライン化はMethodBase.GetCurrentMethod
だまされやすい方法ですが、それしか方法がないのでしょうか?