> DynamicMethod使うと、同じアセンブリ内の型のメンバに限ってprivateでもアクセスできる

次のコードじゃアクセスできないんだけど、
これってどうやるの?

class A{
int a = 288888; // 誰もアクセスできまい!ふはははは!
}

var dm = new DynamicMethod("func", typeof(int), new[] { typeof(A) });
var field = typeof(A).GetField("a", BindingFlags.NonPublic | BindingFlags.Instance);

var gen = dm.GetILGenerator();
gen.Emit(OpCodes.Ldarg_0);
gen.Emit(OpCodes.Ldfld, field);
gen.Emit(OpCodes.Ret);

var f = (Func<A, int>)dm.CreateDelegate(typeof(Func<A, int>));
var r = f(new A());