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());