是否可以查看在表达式树上调用 Compile() 时生成的 IL 代码?考虑这个非常简单的例子:
class Program
{
public int Value { get; set; }
static void Main(string[] args)
{
var param = Expression.Parameter(typeof(Program));
var con = Expression.Constant(5);
var prop = Expression.Property(param, typeof(Program).GetProperty("Value"));
var assign = Expression.Assign(prop, con);
Action<Program> lambda = Expression.Lambda<Action<Program>>(assign, param).Compile();
Program p = new Program();
lambda(p);
//p.Value = 5;
}
}
现在,表达式树执行最后一行Main
所说的内容。编译应用程序,然后在 Reflector 中打开它。p.Value = 5;
您可以看到执行分配的 IL 代码。但是表达式树是在运行时创建和编译的。是否可以从编译中查看生成的 IL 代码?