Я пытаюсь понять AST на С#. Интересно, что именно делает метод 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();
Чтобы избежать недоразумений, я понимаю конструкции Expression.Lambda
и Expression.Call
. Меня интересует метод Compile()
. Это как-то порождает настоящую MSIL? Могу ли я увидеть MSIL?