我一直在玩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或item中获取Expression。有人能把我推向正确的方向吗?
答案 0 :(得分: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));
}
}