2009-05-26 7 views
2

J'ai joué un peu avec le DLR et je suis un peu bloqué sur les méthodes d'appel. Par exemple, supposons que je veux faire une expression pour pousser quelque chose sur une pile:Comment faire une expression LINQ pour appeler une méthode?

class StackInfo{ 

    protected Stack<SomeClass> _stack; 

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

Je suis coincé parce que je se suis pas vraiment sûr comment obtenir une expression de _stack ou un élément. Quelqu'un pourrait-il me pousser dans la bonne direction?

Répondre

3

Utilisez la méthode usine 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)); 
    } 
} 
+0

Hmm .... Il semble si simple quand vous mettez cette façon. :-) –

+0

Parfois, il suffit d'un autre œil. –

Questions connexes