public void TestOverloadedMethods()
        {
            var obj       = new MultipleOverloadedMethodsClass();
            var cecilType = CurrentAssembly.FindRuntimeType(typeof(MultipleOverloadedMethodsClass));

            var met    = Recompiler.RecompileMethod(cecilType.GetMethodByName("test"));
            var result = met.Invoke(this, new object[] { obj });

            Assert.AreEqual(true, (bool)result);
        }
Exemplo n.º 2
0
        public void TestInnerAccess()
        {
            var obj       = new TestClassA();
            var cecilType = CurrentAssembly.FindRuntimeType(typeof(TestClassA));

            var met2   = Recompiler.RecompileMethod(cecilType.GetMethodByName("dotest"));
            var result = met2.Invoke(this, new object[] { obj });

            Assert.NotNull(obj.obj);
            Assert.AreEqual(1337, (int)result);
        }
        public void TestGenericClasses()
        {
            var obj1       = new GenericDerivedClass1();
            var obj2       = new GenericDerivedClass2();
            var cecilType1 = CurrentAssembly.FindRuntimeType(typeof(GenericDerivedClass1));
            var cecilType2 = CurrentAssembly.FindRuntimeType(typeof(GenericDerivedClass2));

            obj1.add();

            obj2.add();
            obj2.add();

            var met    = Recompiler.RecompileMethod(cecilType1.GetMethodByName("test"));
            var result = met.Invoke(obj1, new object[] { obj1 });

            Assert.IsTrue((bool)result);

            met    = Recompiler.RecompileMethod(cecilType2.GetMethodByName("test"));
            result = met.Invoke(obj2, new object[] { obj2 });

            //obj2 was added twice. Test if target method bound to proper field
            Assert.IsTrue((bool)result);
        }