Lambda表达式问题

本文关键字:问题 表达式 Lambda | 更新日期: 2023-09-27 17:52:54

浏览Moq代码,我看到了这段代码。我希望有人能解释一下打给警卫的电话是怎么回事。如图所示,不是null。这是来自extensionexpressions .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 */

Lambda表达式问题

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

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