我有一个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);