反映属性的 5 个级别?

发布于 2024-11-03 04:57:04 字数 208 浏览 0 评论 0原文

我已经实现了一个与 Enterprise Library 5 一起使用的 CustomTraceListener。从 TraceData 方法中,我需要将堆栈向上爬行 6 个级别到具有实际日志记录调用的类,我需要从那里获取一个属性。我不认为我想要 StackFrame 爬升,因为它只获取类而不获取对象,对吧?获取我需要的(字符串)属性的最佳方式是什么?

这是框架 4.0 上的,谢谢。

I have implemented a CustomTraceListener for use with Enterprise Library 5. From the TraceData method, I need to crawl the stack up 6 levels to my class that had the actual logging call, I need a property from there. I don't think I want a StackFrame climb because that only gets the class and not the object, right? What is the best way to get at the (string) property I need?

This is on Framework 4.0, thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

镜花水月 2024-11-10 04:57:04

我认为您无法从程序本身的 .NET 堆栈中获取(参数)值,只能获取方法、属性、类,即:来自 .NET 元数据的任何内容。

如果您想要值,这里有一些解决方案:

  • 在编译之前检测您的代码,添加代码行以捕获参数值
  • 在编译后检测您的代码,例如 PostSharp(免责声明:我不以任何方式隶属)
  • 编写一个 .NET 分析器,但这必须是一个外部程序。现有的工具已经可以执行此操作,例如:CLR 探查器。 CLR 探查器版本 4(可在 此处获取)随源一起提供。

I don't think you can get (parameters) values from the .NET stack from the program itself, only methods, properties, classes, ie: anything that comes from .NET metadata.

If you want values, here are a some solutions:

  • instrument your code before compilation, adding lines of code to capture parameters values
  • instrument your code after compilation, with things like PostSharp for example (disclaimer: I'm not affiliated in any way)
  • write a .NET profiler, but this must be an external program. There a existing tools that do this already, like this one: CLR profiler. Version 4 of the CLR profiler (available here) comes with the source.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文