0

我有一些方法:

public void Foo(Expression<Func<TModel, IEnumerable>> expression) {
  // foo
}

我有变量:

Expression<Func<TModel, IList<TItem>>> expression;

我如何将变量传递给Foo

4

2 回答 2

4

您必须转换您的表达式变量:

var exp = Expression.Lambda<Func<TModel, IEnumerable>>(expression.Body, expression.Parameters);
Foo(exp);
于 2012-05-25T10:30:34.363 回答
2

用这个:

    public Expression<Func<TModel, IEnumerable>> ConvertExpression<TModel, TItem>(Expression<Func<TModel, IList<TItem>>> expression)
    {
        return (Expression<Func<TModel, IEnumerable>>)Expression
            .Lambda(Expression.Convert(expression.Body, typeof(IEnumerable)), expression.Parameters);
    }
于 2012-05-25T10:45:37.493 回答