【发布时间】:2016-09-03 07:15:03
【问题描述】:
我想实现通用记录器,它可以帮助我查看方法的调用堆栈。
我知道 System.Diagnostic 中有一些方法,但它们是在 .net 4.0 中引入的,恐怕它不适用于 xamarin 或 .net core 或类似的东西。所以我想要更通用的解决方案。
另一个问题是 async\await 引入了一些混乱。
我通过在每个方法中传递额外的参数来存储一些上下文并帮助我确定调用堆栈,但是这个解决方案有点复杂。
我也可以使用不安全的代码读取线程堆栈内存并自己检查调用堆栈,但这并不可靠。
还有其他解决办法吗?
【问题讨论】:
-
你当然可以破解它:抛出一个异常,捕获它并从中读取调用堆栈:)
-
@MarcinJuraszek 不错的 hack :) 但我担心它会影响性能太多。