【发布时间】:2011-03-18 08:17:33
【问题描述】:
假设我有一个方法:
public void SomeMethod(String p1, String p2, int p3)
{
#if DEBUG
object[] args = GetArguments();
LogParamaters(args);
#endif
// Do Normal stuff in the method
}
有没有办法检索传递给方法的参数数组,以便记录它们?
我有大量的方法,并希望避免手动将参数按名称传递给记录器,因为人为错误将不可避免地蔓延。
我猜它会涉及某种形式的反射——这很好,因为它只会用于调试目的。
更新
更多信息:
我无法更改 SomeMethod 的方法签名,因为它公开为 WebMethod,并且必须复制它所模拟的遗留系统。
遗留系统已经记录了传入的参数。从新实现开始,将包装遗留系统,所以我希望记录进入 C# 版本的参数,以便我可以验证正确的参数以正确的顺序传入。
我只是想记录参数值和顺序,而不是它们的名称。
【问题讨论】:
-
日志中存储了哪些参数信息?类型、名称、值?
-
这意味着您实际上是在谈论参数,而不是参数。 (See e.g. here for an explanation about the difference.)
-
@stax,是的,这种区别是有道理的。我正在寻找传递给方法的参数值。
标签: c# reflection methods arguments