获取调用方法的参数值

时间:2015-12-17 21:06:39

标签: c# .net reflection parameters

有没有办法在托管代码中执行此操作,或者至少没有严重的性能问题?基本上,我想要得到的当然是

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被调用时已知。

1 个答案:

答案 0 :(得分:1)

你想要的东西不是开箱即用的。您可以将包含所有属性的对象作为参数传递,而不是通过反射来获取所有属性。