LambdaExpression DynamicInvoke抛出“参数计数不匹配”

时间:2019-03-02 17:57:59

标签: c# dynamic lambda expression

我有一个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'value +“ 1”';

更新由@elgonzo解决:

expression.Compile().DynamicInvoke(value);

0 个答案:

没有答案