Как мне сделать выражение LINQ для вызова метода? - PullRequest
2 голосов
/ 27 мая 2009

Я немного поигрался с DLR и немного застрял в вызове методов. Например, предположим, что я хочу создать выражение для помещения чего-либо в стек:

class StackInfo{

    protected Stack<SomeClass> _stack;

    public Expression Push(SomeClass item)
    {
        MethodInfo mi = _stack.GetType().GetMethod("Push");
        return Expression.Call(_stack, mi, item);
    }
}

Я застреваю, потому что я не совсем уверен, как получить выражение из стека или элемента. Может ли кто-нибудь подтолкнуть меня в правильном направлении?

1 Ответ

3 голосов
/ 27 мая 2009

Используйте фабричный метод Expression.Constant:

class StackInfo
{
    protected Stack<SomeClass> _stack;

    public Expression Push(SomeClass item)
    {
        MethodInfo mi = _stack.GetType().GetMethod("Push");

        return Expression.Call(Expression.Constant(_stack), mi, Expression.Constant(item));
    }
}
...