lambda表达问题

时间:2011-04-24 01:37:42

标签: c# lambda

浏览Moq代码,我看到了这段代码。我希望有人可以解释Guard.NotNull调用中发生的事情,如下所示。这是来自ExtensionExpression.cs,万一有人想知道

public static LambdaExpression ToLambda(this Expression expression)
{
    Guard.NotNull(() => expression, expression);
    /* other code suppressed...

/* code from Guard.cs */
internal static class Guard
{
/// <summary>
/// Ensures the given <paramref name="value"/> is not null.
/// Throws <see cref="ArgumentNullException"/> otherwise.
/// </summary>
public static void NotNull<T>(Expression<Func<T>> reference, T value)
{
    if (value == null)
    {
        throw new ArgumentNullException(GetParameterName(reference));
    }
}
/* rest of code suppressed */

1 个答案:

答案 0 :(得分:3)

它所做的只是在异常中返回参数的名称,而不是在值为null时对其进行硬编码。在Moq的情况下,参数的名称很可能来自测试本身,因此很难在Moq代码中对其进行硬编码。

表达式可以捕获有关方法/属性的信息,例如其名称。