获取调用方法的参数值
Getting parameter values for calling method
有没有办法在托管代码中做到这一点,或者至少没有严重的性能问题?基本上,我想得到的当然是
public void Method ( int Index, string Name, IPAddress IP, object Arg ) {
object[] parameterValues = HereGoesMagic.GetParameterValues (
new StackFrame ( 0, false ).GetMethod ()
);
}
但是,唉,我怀疑这是我一厢情愿的想法。
更新
虽然冒着陷入XY Problem的风险,也许我确实应该寻求建议而不是尝试自己在自行车制造行业再次。
问题基本上是我必须编写一堆具有可变参数编号的方法,所有这些方法都将调用具有单个聚合参数的单个方法。像
void MAggregate ( object[] parameters ) {
<...>
}
void M1 ( int i, string s, DateTime d ) {
object[] parameters p = ???
MAggregate ( p );
}
void M2 ( string[] tags, float f ) {
object[] parameters p = ???
MAggregate ( p );
}
将一个对象传递给它们解决不了多少问题,因为方法数量和参数差异都非常高。使用复制粘贴...嗯,它是 复制粘贴。
更新
以上所有内容都是为了完成一个相对简单的任务:请求各种 REST API 端点,其中包含作为查询字符串传递的大量不同参数。
所需的端点基础 Uri 和查询参数名称在别处确定,并且在调用 M1、M2、...、MAggregate 时已知。
你想要的是开箱即用的。您可以将包含所有属性的对象作为参数传递,而不是通过反射获取所有内容。
有没有办法在托管代码中做到这一点,或者至少没有严重的性能问题?基本上,我想得到的当然是
public void Method ( int Index, string Name, IPAddress IP, object Arg ) {
object[] parameterValues = HereGoesMagic.GetParameterValues (
new StackFrame ( 0, false ).GetMethod ()
);
}
但是,唉,我怀疑这是我一厢情愿的想法。
更新
虽然冒着陷入XY Problem的风险,也许我确实应该寻求建议而不是尝试自己在自行车制造行业再次。
问题基本上是我必须编写一堆具有可变参数编号的方法,所有这些方法都将调用具有单个聚合参数的单个方法。像
void MAggregate ( object[] parameters ) {
<...>
}
void M1 ( int i, string s, DateTime d ) {
object[] parameters p = ???
MAggregate ( p );
}
void M2 ( string[] tags, float f ) {
object[] parameters p = ???
MAggregate ( p );
}
将一个对象传递给它们解决不了多少问题,因为方法数量和参数差异都非常高。使用复制粘贴...嗯,它是 复制粘贴。
更新
以上所有内容都是为了完成一个相对简单的任务:请求各种 REST API 端点,其中包含作为查询字符串传递的大量不同参数。
所需的端点基础 Uri 和查询参数名称在别处确定,并且在调用 M1、M2、...、MAggregate 时已知。
你想要的是开箱即用的。您可以将包含所有属性的对象作为参数传递,而不是通过反射获取所有内容。