2010-11-18 98 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通过作为代表

相关问题