Gibt es eine Möglichkeit, String Darstellung von Lambda zu einem Lambda Func zu konvertieren?Parse String zu C# Lambda Func
Ich habe versucht, Dynamic LINQ, aber es funktioniert nicht wie erwartet - zum Beispiel erwartet es nicht Lambda-Syntax =>.
Zusammenfassung der Antworten:
- meine eigenen C# Compiler zu schreiben - sehr lustig
- externen Compiler Anheizen (wie csc.exe) - sehr langsam
- DLINQ mit - wie ich sagte, ich don‘ t sehen, wie es Lambda-Ausdrücke
analysieren kann, warum ich dies tun müssen: weil es keine Möglichkeit gibt, Lambda-Ausdrücke zu passieren, um benutzerdefinierte Attribute wie
[Secure(role => role.CanDoThis && role.AllowedCount > 5)]
Um dieses Problem zu umgehen Ich mag würde Lambda als String zu übergeben: "role => role.CanDoThis & & role.AllowedCount> 5". Aber ich muss DLINQ so verwenden: "CanDoThis & & AllowedCount> 5" - das ist die Syntax, die es versteht. Aber meine Frage war echte Lambdas. Ich habe DLINQ bereits zum Zeitpunkt des Fragens benutzt.
Warum Sie sich Sorgen über, dass der Compiler langsam wäre Anheizen? Sie können den resultierenden Ausdruck zwischenspeichern. – erikkallen
Es scheint, dass C# 5 mit etwas zu tun kommt genau das, was Sie wollen. Schauen Sie sich ein Video von der PDC 2008 an, auf dem Anders Hejlsberg über die Zukunft von C# spricht. –
Ich warte auf C# 4.0 veröffentlicht zu werden ... C# 5 ist viel zu weit weg ;-) Ich brauche diese Funktion für Lambdas in Attributen. Hope 4.0 wird es (sowie generische Attribute) haben. – queen3