我有一个期望Action<string>
我按如下方式调用该方法:
commandProcessor.ProcessCommand(s=> ShowReceipt("MyStringValue"))
ProccessCommand(Action<string> action)
{
action.Invoke(...); // How do I get the reffered string?
}
我必须使用Expression<Action<string>>
吗?如果是这样,我如何获得参数值?
答案 0 :(得分:2)
你确实必须使用Expression<Action<string>>
......即使这样,你也必须做出一些假设或编写相当多的代码才能使其非常强大。
This post可以帮助你 - 它非常相似 - 但如果可能的话,我会尝试考虑替代设计。表达式树 很棒,非常有趣......但我通常认为它们是最后的手段。
答案 1 :(得分:1)
通常你会这样称呼它:
commandProcessor.ProcessCommand(s=> ShowReceipt(s))
或只是
commandProcessor.ProcessCommand(ShowReceipt)
并将字符串提供给被调用方法中的操作:
ProcessCommand(Action<string> action)
{
action("MyStringValue");
}