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