Estoy buscando la capacidad de convertir métodos completos en árboles de expresión. Escribirlo sería una mierda. :)Buscando un compilador de expresión de C# => Linq
Así (ejemplo trivial) dado el siguiente texto:
public static int Add(int a, int b)
{
return a + b;
}
Quiero obtener ya sea un objeto en memoria que representa esto, o el siguiente texto:
ParameterExpression a = Expression.Parameter(typeof(int), "a");
ParameterExpression b = Expression.Parameter(typeof(int), "b");
var expectedExpression = Expression.Lambda<Func<int, int, int>>(
Expression.Add(a,b),
a,
b
);
Cualquier ideas? ¿Alguien ha hecho algo con Roslyn que pueda hacer esto?
EDIT: Aclaración: Quiero chupar cualquier método C# (por ejemplo, el de arriba) como texto, y producir una expresión resultante. Básicamente estoy buscando compilar cualquier método de C# dado en árboles de Expresión.
Pensé que Roslyn puede hacerlo. ¿Conoces alguna fuente existente que ya lo haya hecho? Estoy buscando algo disponible. – Shlomo
Roslyn está fuera solo por un mes, creo que tomará algún tiempo porque la gente escribirá y experimentará con él. Pero es posible que tenga algo en código complejo para el compilador de expresiones usando ironía, etc. Creo que en algún momento la gente publicará proyectos en código plex para Roslyn o puede comenzar uno y pedirle a la gente que contribuya y se construirá a partir de ahí. –