Sto cercando di capire AST in C#. Mi chiedo, che cosa fa esattamente il metodo Compile()
da questo esempio.Cosa fa il metodo 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();
Per evitare equivoci, ho capito il Expression.Lambda
e Expression.Call
costrutti. Quello che mi interessa è il metodo Compile()
. In qualche modo produce vero MSIL? Posso vedere l'MSIL?
Per ottenere da un'espressione a un delegato è possibile richiamare è necessario chiamare 'Compile()' – BrokenGlass
Ok e cosa c'è dietro quel delegato? –
Un metodo (MethodInfo) – Jeff