Reputation: 198577
I've been playing around with the DLR a bit and am a bit stuck on calling methods. For example, suppose I want to make an expression to push something onto a stack:
class StackInfo{
protected Stack<SomeClass> _stack;
public Expression Push(SomeClass item)
{
MethodInfo mi = _stack.GetType().GetMethod("Push");
return Expression.Call(_stack, mi, item);
}
}
I'm getting stuck because I'm not really sure how to get an Expression out of _stack or item. Could somebody push me in the right direction?
Upvotes: 2
Views: 2668
Reputation: 45445
Use the Expression.Constant
factory method:
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));
}
}
Upvotes: 3