2010-09-24 35 views
0

我有希望的Action<string>如何獲取行動<string>委託的引用字符串?

的方法我稱之爲方法如下:

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


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

我一定要使用Expression<Action<string>>?如果是這樣,我如何獲取參數值?

+0

什麼下文稱字符串?你的代碼期望_you_傳遞一個字符串到invoke方法(其中btw是redudant你做動作(...))。沒有綁定到動作參數的字符串。 – 2010-09-24 09:58:16

+0

is action.Invoke(...)與action(...)不一樣嗎? – Rookian 2010-09-24 10:32:13

回答

2

你確實必須使用Expression<Action<string>> ...即使這樣你也必須做出一些假設或者編寫相當多的代碼來使它非常強大。

This post可能會幫助你 - 它非常相似 - 但如果可能的話,我會嘗試考慮替代設計。表達樹偉大的,非常有趣...但我通常認爲他們是一個最後的手段。

1

通常你會這樣稱呼它:

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

或者乾脆

commandProcessor.ProcessCommand(ShowReceipt) 

並提供字符串到行動中被調用方法:

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

我的字符串值不同。我現在做的是有一個額外的參數字符串。 ProcessCommand(動作動作,字符串str) – Rookian 2010-09-24 10:26:47