如何获取Action <string>委托的引用字符串?</string>

时间:2010-09-24 09:20:02

标签: c# delegates action

我有一个期望Action<string>

的方法

我按如下方式调用该方法:

commandProcessor.ProcessCommand(s=> ShowReceipt("MyStringValue"))


ProccessCommand(Action<string> action)
{
  action.Invoke(...); // How do I get the reffered string?
}

我必须使用Expression<Action<string>>吗?如果是这样,我如何获得参数值?

2 个答案:

答案 0 :(得分:2)

你确实必须使用Expression<Action<string>> ......即使这样,你也必须做出一些假设或编写相当多的代码才能使其非常强大。

This post可以帮助你 - 它非常相似 - 但如果可能的话,我会尝试考虑替代设计。表达式树 很棒,非常有趣......但我通常认为它们是最后的手段。

答案 1 :(得分:1)

通常你会这样称呼它:

 commandProcessor.ProcessCommand(s=> ShowReceipt(s)) 

或只是

 commandProcessor.ProcessCommand(ShowReceipt)

并将字符串提供给被调用方法中的操作:

 ProcessCommand(Action<string> action) 
 { 
  action("MyStringValue"); 
 }