我已经实现了一个用于Enterprise Library 5的CustomTraceListener。从TraceData方法中,我需要将堆栈爬上6层到具有实际日志调用的类,我需要从那里获得一个属性。我不认为我想要StackFrame爬升因为那只获得类而不是对象,对吧?获得(string)属性的最佳方法是什么?
我不认为你可以从。net堆栈中从程序本身获得(参数)值,只能从方法,属性,类,即:来自。net元数据的任何东西。
如果你想要值,这里有一些解决方案:
- 在编译前检测代码,添加代码行来捕获参数值
- 工具你的代码编译后,与东西像PostSharp例如(免责声明:我不隶属于任何方式) 写一个。net分析器,但这必须是一个外部程序。有一个现有的工具可以做到这一点,比如这个:CLR分析器。CLR分析器的第4版(在这里提供)随源代码一起提供。