Estoy tratando de entender AST en C#. Me pregunto, qué método exactamente Compile()
de este ejemplo hace.¿Qué hace el método Lambda Expression Compile()?
// Some code skipped
Expression<Func<string, int, int, string>> data = Expression.Lambda<Func<string, int, int, string>>(
Expression.Call(s, typeof(string).GetMethod(“Substring”, new Type[] { typeof(int), typeof(int) }), a, b),
s, a, b
);
Func<string, int, int, string> fun = data.Compile();
Para evitar malentendidos, entiendo la Expression.Lambda
y Expression.Call
construcciones. Lo que me interesa es el método Compile()
. ¿De alguna manera produce MSIL real? ¿Puedo ver el MSIL?
Para pasar de una Expresión a un delegado puede invocar debe llamar a 'Compilar()' – BrokenGlass
Ok, ¿y qué hay detrás de ese delegado? –
Un método (MethodInfo) – Jeff