¿Hay alguna forma de convertir la representación de cadena de lambda a una función lambda?Parse cadena a C# lambda Func
Func<Product, bool> func = Parse<Product, bool>("product => product.Name.Length > 0");
me trataron dinámico LINQ pero no funciona como se esperaba - por ejemplo, que no espera que la sintaxis lambda =>.
Resumen de las respuestas:
- escribir mi propio compilador de C# - muy divertido
- disparar hasta compilador externo (como csc.exe) - muy lento
- usando DLINQ - como he dicho yo no' t ver cómo se puede analizar lambda expresiones
¿Por qué necesito esto: porque no hay manera de pasar lambdas a los atributos personalizados como
[Secure(role => role.CanDoThis && role.AllowedCount > 5)]
Así como una solución que me gustaría pasar lambda como cadena: "role => role.CanDoThis & & role.AllowedCount> 5". Pero parece que tendré que usar DLINQ así: "CanDoThis & & AllowedCount> 5" - ya que esa es la sintaxis que entiende. Pero mi pregunta era sobre las verdaderas lambdas, ya he usado DLINQ al momento de preguntar.
¿Por qué se preocupan por que para prender el compilador sería lento? Puede almacenar en caché la expresión resultante. – erikkallen
Parece que C# 5 vendrá con algo para hacer exactamente lo que usted desea. Eche un vistazo a un video de PDC 2008 donde Anders Hejlsberg habla sobre el futuro de C#. –
Estoy esperando que se publique C# 4.0 ... C# 5 está demasiado lejos ;-) Realmente necesito esta característica para lambdas en atributos. Hope 4.0 lo tendrá (así como los atributos genéricos). – queen3