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 に答える