相关疑难解决方法(0)

查看从已编译表达式生成的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<Program> lambda = Expression.Lambda<Action<Program>>(assign, param).Compile();

        Program p = new Program();
        lambda(p);



        //p.Value = 5;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,表达式树执行最后一行Main所说的内容.编译应用程序,然后在Reflector中打开它.您可以看到p.Value = 5;执行分配的IL代码.但表达式树是在运行时编译和编译的.是否可以从编译中查看生成的IL代码?

c# il expression-trees .net-reflector

30
推荐指数
2
解决办法
9602
查看次数

标签 统计

.net-reflector ×1

c# ×1

expression-trees ×1

il ×1