查看从编译的表达式生成的IL代码

20 浏览
0 Comments

查看从编译的表达式生成的IL代码

在调用Expression树上的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 lambda = Expression.Lambda>(assign, param).Compile();
        Program p = new Program();
        lambda(p);
        //p.Value = 5;
    }
}

现在,表达式树执行了Main方法的最后一行所描述的操作。编译应用程序后,打开Reflector。您可以看到执行赋值操作的p.Value = 5;的IL代码。但是,表达式树是在运行时创建和编译的。是否可以查看编译后的IL代码?

0