【发布时间】:2010-09-16 07:45:52
【问题描述】:
我正在尝试使用反射记录方法的参数。我在 StackOverflow 上阅读了关于此问题的 earlier question,它也将我指向 CLR API。
是否有可能,有人可以指出正确的方向,至于我将如何获取使用 API 传递的参数值?
【问题讨论】:
标签: api reflection .net-3.5 clr
我正在尝试使用反射记录方法的参数。我在 StackOverflow 上阅读了关于此问题的 earlier question,它也将我指向 CLR API。
是否有可能,有人可以指出正确的方向,至于我将如何获取使用 API 传递的参数值?
【问题讨论】:
标签: api reflection .net-3.5 clr
基本上你不能在“vanilla”.NET 代码中。参数只是局部变量,如果不深入研究其他线程中提到的调试器 API,则无法获取它们的值。
您可能能够做的是使用PostSharp 插入日志记录代码。我建议在查看调试 API 之前先走这条路!
【讨论】:
如果您喜欢冒险,可以查看 System.Runtime.Remoting.Messaging 中的 RealProxy 类。它允许您实现一个代理类,该类可以拦截对您的方法的调用。然后,您可以注销参数并将调用转发到您的实际班级。
这会影响性能,但它可能会给你想要的东西......
【讨论】:
@Sean:这看起来很有希望,在WCF中是否可以拦截并获取类似的值?我知道服务日志已经包含该信息,但很难挖掘它,这使我寻找记录方法及其参数的替代方法。
【讨论】: