2010-01-04 3 views
2

Est-il possible d'analyser une fonction fournie sous la forme d'une expression lamba pour comprendre la nature de la fonction lors de l'exécution?Comment "scanner" une expression lambda en C#?

Exemple:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Examples example = new Examples(x => x^2 + 2); 
    } 
} 

public class Examples 
{ 
    public Examples(Func<dynamic, dynamic> func) 
    { 
     // How can I scan "func" here to figure out that it is defined as "x => x^2 + 2" instead of, say, as "x => Math.Exp(x)"? 
    } 
} 

Répondre

4

Vous devez utiliser expression trees, comme ceci:

public Examples(Expression<Func<dynamic, dynamic>> func) { 
    ... 
} 

Pour plus d'informations, consultez here.

1

Qu'est-ce que vous êtes après est un arbre d'expression, vous pouvez changer votre signature de la méthode Exemple pour ....

public Examples(Expression<Func<dynamic, dynamic>> exp) 
{ 
    // Visit the expression in here... 
} 
+0

wow, je dois être rapide ici .... –

Questions connexes