Y at-il un moyen de convertir la représentation de chaîne de lambda à un lambda Func? J'ai essayé Dynamic LINQ mais cela ne fonctionne pas comme prévu - par exemple, il ne s'attend pas à la syntaxe lambda =>.Parse chaîne à C# lambda Func
Résumé des réponses:
- écrire mon propre compilateur C# - très drôle
- tir jusqu'à compilateur externe (comme csc.exe) - très lent
- utilisant DLINQ - comme je le disais, je n » t voir comment il peut analyser lambda expressions
Pourquoi ai-je besoin: parce qu'il n'y a aucun moyen de passer lambdas à des attributs personnalisés comme
[Secure(role => role.CanDoThis && role.AllowedCount > 5)]
donc comme solution que je voudrais passer lambda sous forme de chaîne: "rôle => role.CanDoThis & & role.AllowedCount> 5". Mais il me semble que je devrais utiliser DLINQ comme ceci: "CanDoThis & & AllowedCount> 5" - puisque c'est la syntaxe qu'il comprend. Mais ma question portait sur les vrais lambdas, j'ai déjà utilisé DLINQ au moment de poser la question.
Pourquoi vous vous inquiétez de ce compilateur mettant le feu au serait lent? Vous pouvez mettre en cache l'expression résultante. – erikkallen
Il semble que C# 5 viendra avec quelque chose à faire exactement ce que vous voulez. Jetez un oeil à une vidéo de PDC 2008 où Anders Hejlsberg parle de l'avenir de C#. –
Je suis en attente pour C# 4.0 à libérer ... C# 5 est ;-) Je dois vraiment trop loin cette fonctionnalité pour lambdas dans les attributs. Hope 4.0 l'aura (ainsi que des attributs génériques). – queen3