Voici le contexte de ma question:Est-il possible de transformer une instance de délégué en une expression Lambda?
Une technique courante consiste à déclarer le paramètre d'une méthode comme une expression Lambda plutôt que comme un délégué. C'est ainsi que la méthode peut examiner l'expression pour faire des choses intéressantes comme trouver les noms des appels de méthode dans le corps de l'instance déléguée.
Le problème est que vous perdez certaines des fonctions intelli-sens de Resharper. Si le paramètre de la méthode était déclaré en tant que délégué, Resharper aiderait lors de l'écriture de l'appel à cette méthode, en vous invitant à utiliser la syntaxe x => x comme valeur d'argument pour cette méthode.
Alors ... revenir à ma question, je voudrais faire le suivi:
MethodThatTakesDelegate(s => s.Length);
}
private void MethodThatTakesDelegate(Func<string, object> func)
{
//convert func into expression
//Expression<Func<string, object>> expr = "code I need to write"
MethodThatTakesExpression(expr);
}
private void MethodThatTakesExpression(Expression<Func<string, object>> expr)
{
//code here to determine the name of the property called against string (ie the Length)
}
Je glissait sur [cette entrée de blog] (http://blogs.msdn.com/charlie/archive/2008/01/31/expression-tree-basics.aspx) et il semble faire juste une cession directe . Cela ne fonctionnerait-il pas pour vous? – plinth