예제 #1
0
        public void TestStaticMethodRewrite()
        {
            MethodInfo     methodInfo     = typeof(StubHelper).GetMethod("GetMethodPointer");
            MethodRewriter methodRewriter = MethodRewriter.CreateRewriter(methodInfo);
            DynamicMethod  dynamicMethod  = methodRewriter.Rewrite() as DynamicMethod;

            Delegate func = dynamicMethod.CreateDelegate(typeof(Func <MethodBase, IntPtr>));

            Assert.AreEqual(StubHelper.GetMethodPointer(methodInfo), func.DynamicInvoke(methodInfo));
        }
예제 #2
0
        public void TestGetMethodPointer()
        {
            MethodInfo    methodInfo = typeof(Console).GetMethod("Clear");
            DynamicMethod dynamicMethod
                = new DynamicMethod("Method", typeof(void), Type.EmptyTypes);
            ILGenerator ilGenerator = dynamicMethod.GetILGenerator();

            ilGenerator.Emit(OpCodes.Ret);

            Assert.AreNotEqual(IntPtr.Zero, StubHelper.GetMethodPointer(methodInfo));
            Assert.AreNotEqual(IntPtr.Zero, StubHelper.GetMethodPointer(dynamicMethod));
        }