有没有办法在托管代码中执行此操作,或者至少没有严重的性能问题?基本上,我想要得到的当然是
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被调用时已知。
答案 0 :(得分:1)
你想要的东西不是开箱即用的。您可以将包含所有属性的对象作为参数传递,而不是通过反射来获取所有属性。