式ツリーで 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 コードを表示することはできますか?