Как получить указанную строку делегата Action <string>? - PullRequest
0 голосов
/ 24 сентября 2010

У меня есть метод, который ожидает Action<string>

Я вызываю метод следующим образом:

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


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

Нужно ли использовать Expression<Action<string>>?Если так, как я могу получить значения параметров?

Ответы [ 2 ]

2 голосов
/ 24 сентября 2010

Вам бы действительно пришлось использовать Expression<Action<string>> ... и даже тогда вам пришлось бы делать некоторые предположения или писать достаточно много кода, чтобы сделать его очень надежным.

Этот пост может помочь вам - это очень похоже - но я постараюсь придумать альтернативный дизайн, если это возможно.Деревья выражений великолепны и очень интересны ... но я обычно считаю их чем-то вроде последнего средства.

1 голос
/ 24 сентября 2010

Обычно вы бы назвали это так:

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

или просто

 commandProcessor.ProcessCommand(ShowReceipt)

и укажите строку для действия в вызываемом методе:

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