лямбда-выражение вопрос - PullRequest
2 голосов
/ 24 апреля 2011

Просматривая код 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 Ответ

3 голосов
/ 24 апреля 2011

Все, что он делает, это возвращает имя аргумента в исключении, а не жестко его кодирует, когда значение равно нулю. В случае Moq имя аргумента, скорее всего, происходит от самого теста, поэтому было бы сложно жестко закодировать его в коде Moq.

Выражения могут захватывать информацию о методе / свойстве, такую ​​как его имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...