我有接受与喜欢的签名的操作方法:如何从Action中获取参数?
public void DoSomething(Action code);
然后我会调用该方法,如:
DoSomething(()=> CallSomething("A","B","C");
在DoSomething的方法,我怎么能得到的参数值?
另一个要考虑的是,CallSomething可潜在具有可选参数,这意味着我不能只是改变的DoSomething的签名 - >Expression<Action>
所有我需要做的就是参数值,我对任何可以工作的方法都感兴趣。
我已经尝试创建一个新方法,它接受Expression<Action>
然后通过(从DoSomething)传递动作,但参数未填充。
欢迎任何建议。
我不认为这会很简单,因为在'DoSomething'函数中,'code'只是某种函数指针;你并不总是知道这是一个调用另一个函数的lambda函数。我觉得你不得不使用Reflection来反汇编lambda并寻找函数调用,但即使如此,你仍然在做一些相当棘手的事情。 –
为什么?你想做什么,为什么你认为采取“行动”(或“表达式')的方法是做到这一点的方法?为什么'Expression '阻止您使用可选参数? –
Luaan