2010-11-18 103 views
0

在頁面code.google.com/p/fakeiteasy/我注意到行了一個問題:C#關於lambda表達式作爲方法參數

A.CallTo(() => shop.GetTopSellingCandy()).Returns(lollipop); 

所以,問題是 - 如何通過lambda表達式作爲方法參數?

+0

呃?我可能會錯過一些東西(一個lambda表達式有一個有效的可命名靜態類型,除了處理那些不適合的'new'結構時) - 你嘗試了什麼?提示:在很多情況下,考慮'Func <...>'。 – 2010-11-18 17:02:50

回答

5

此函數採用類型Func<T>(具有通用參數的普通代表)或更可能的Expression<Func<T>>expression tree)的參數。

該函數本身可能具有通過傳遞方法推斷的泛型參數。

通過採用表達式樹,函數能夠檢查表達式中的代碼並查看它的功能。

+0

+1永遠不會失敗......總是比我快20秒。 – 2010-11-18 17:04:45

+0

是的,沒錯,FakeItEasy檢查表達式樹以獲取調用方法的實例,以及在該實例上調用哪個方法(以及哪些參數)。 – 2010-11-27 12:22:41

2

您給出的代碼完全是這樣做的 - 將lambda表達式作爲參數傳遞給方法調用。

0

CallTo可能有簽名'CallTo(Action action)'。所以lambda通過作爲代表