LambdaExpression DynamicInvoke генерирует «Несоответствие количества параметров» - PullRequest
0 голосов
/ 02 марта 2019

У меня есть метод ApplyExpression:

public object ApplyExpression (object value, LambdaExpression expression)
{ 
    object result = Expression.Lambda(expression).Compile().DynamicInvoke(value);
    return result;
}

И вызов в первом случае:

DateTime dateTime = DateTime.Now;
var expression = Expression<Func<DateTime, DateTime>> expression = a => a.AddDays(1);
var date = ApplyExpression(dateTime, expression);

В этом случае значением является тип 'DateTime', а ExpressionBody является 'value.AddDays(1) '.
Это должно вернуть InputDate + 1 день.
Но оно выдает исключение:' Несоответствие количества параметров '.
Второй случай - это тип' string 'и значение ExpressionBody' + "1" ';

ОБНОВЛЕНИЕ Решено @elgonzo:

expression.Compile().DynamicInvoke(value);
...