繁体   English   中英

如何使用反射从方法中获取方法的参数值?

[英]How to get a method's parameter values from within the method using reflection?

我有数百个函数,每个函数都有不同的名称和参数。 每次调用 function 时,我都需要记录方法名称、参数名称以及客户端通过参数传入的值。 但我不想为每个 function 编写日志记录代码。 这需要很长时间,并且每次更改函数的参数时,日志代码也需要更改。

所以我希望我可以写一段代码,并将它插入到每个function的开头。 此代码块使用反射来获取方法名称、参数名称,最重要的是,通过参数传递到 function 的值。

我怎么做?

通过帮助器 function 上的[CallerMemberName]可以轻松获取方法名称,例如:

static string Me([CallerMemberName]string caller=null) => caller;

获取MethodInfo以及ParameterInfo定义(包括名称)非常容易,但效率不高。 使用反射 API 无法获取参数值,即使可以:性能也会非常糟糕。 既然你说

最重要的是,通过参数传递给 function 的值。

我认为您需要寻找替代方案。 其中之一可能只是“手动添加您需要的代码”。 在构建时进行 IL 编织可能是一种选择,但这是一个更高级的主题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM