示例#1
0
        public void SimpleNonGeneric()
        {
            {
                var e1 = Emit.NewDynamicMethod(typeof(void), new [] { typeof(StoreFieldClass) });
                var f  = typeof(StoreFieldClass).GetField("Static");
                e1.LoadConstant(12);
                e1.StoreField(f);
                e1.Return();

                var d1 = e1.CreateDelegate <Action <StoreFieldClass> >();

                StoreFieldClass.Static = 2;
                d1(null);

                Assert.AreEqual(12, StoreFieldClass.Static);
            }

            {
                var e1 = Emit.NewDynamicMethod(typeof(void), new [] { typeof(StoreFieldClass) });
                var f  = typeof(StoreFieldClass).GetField("Instance");
                e1.LoadArgument(0);
                e1.LoadConstant(12);
                e1.StoreField(f);
                e1.Return();

                var d1 = e1.CreateDelegate <Action <StoreFieldClass> >();

                var x = new StoreFieldClass();
                d1(x);

                Assert.AreEqual(12, x.Instance);
            }
        }
示例#2
0
        public void Simple()
        {
            {
                var e1 = Emit<Action<StoreFieldClass>>.NewDynamicMethod();
                var f = typeof(StoreFieldClass).GetField("Static");
                e1.LoadConstant(12);
                e1.StoreField(f);
                e1.Return();

                var d1 = e1.CreateDelegate();

                StoreFieldClass.Static = 2;
                d1(null);

                Assert.AreEqual(12, StoreFieldClass.Static);
            }

            {
                var e1 = Emit<Action<StoreFieldClass>>.NewDynamicMethod();
                var f = typeof(StoreFieldClass).GetField("Instance");
                e1.LoadArgument(0);
                e1.LoadConstant(12);
                e1.StoreField(f);
                e1.Return();

                var d1 = e1.CreateDelegate();

                var x = new StoreFieldClass();
                d1(x);

                Assert.AreEqual(12, x.Instance);
            }
        }