2

我一直在玩弄DLR并且有点卡在调用方法上。例如,假设我想创建一个表达式来将某些东西压入堆栈:

class StackInfo{

    protected Stack<SomeClass> _stack;

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

我被卡住了,因为我不确定如何从 _stack 或项目中获取表达式。有人能把我推向正确的方向吗?

4

1 回答 1

3

使用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));
    }
}
于 2009-05-27T00:12:28.137 回答