我正在尝试使用反射来记录方法的参数。我在StackOverflow上阅读了有关此问题的earlier question,并将其指向了CLR API。
有可能,有人可以指出我正确的方向,我将如何获得使用API传递的参数值?
答案 0 :(得分:3)
基本上你不能用“vanilla”.NET代码。参数只是局部变量,如果不深入研究另一个线程中提到的调试器API,则无法获取它们的值。
您可以能够做的是使用PostSharp插入日志记录代码。我建议在查看调试API之前先走这条路线!
答案 1 :(得分:1)
如果您有冒险精神,可以在System.Runtime.Remoting.Messaging中查看RealProxy类。它允许您实现一个代理类,可以拦截对您的方法的调用。然后,您可以注销参数并将调用转发到您的实际课程。
这会有一个性能打击,但它可能会给你你想要的......
答案 2 :(得分:0)
@ Sean:这看起来很有希望,是否有可能在WCF中拦截并获得类似的值?我知道服务日志已经包含了这些信息,但很难深入研究,这使我找到了记录方法及其参数的替代方法。