コード例 #1
0
        public void CreateDynMethod_TypeOwner(bool skipVisibility)
        {
            Type[] parameterTypes = new Type[] { typeof(TestClass), typeof(int) };

            DynamicMethod method = new DynamicMethod("Method", typeof(int), parameterTypes, typeof(TestClass), skipVisibility);
            MethodInfo baseDefinition = method.GetBaseDefinition();
            Assert.Equal(method, baseDefinition);
        }
コード例 #2
0
        public void CreateDynMethod_TypeOwner(bool skipVisibility)
        {
            Type[] parameterTypes = new Type[] { typeof(TestClass), typeof(int) };

            DynamicMethod method         = new DynamicMethod("Method", typeof(int), parameterTypes, typeof(TestClass), skipVisibility);
            MethodInfo    baseDefinition = method.GetBaseDefinition();

            Assert.Equal(method, baseDefinition);
        }
コード例 #3
0
        public void CreateDynMethod_Module(bool skipVisibility)
        {
            Module module = typeof(TestClass).GetTypeInfo().Module;
            Type[] parameterTypes = new Type[] { typeof(TestClass), typeof(int) };

            DynamicMethod method = new DynamicMethod("Method", typeof(int), parameterTypes, module, skipVisibility);
            MethodInfo baseDefinition = method.GetBaseDefinition();
            Assert.Equal(method, baseDefinition);
        }
コード例 #4
0
        public void CreateDynMethod_Module(bool skipVisibility)
        {
            Module module = typeof(TestClass).GetTypeInfo().Module;

            Type[] parameterTypes = new Type[] { typeof(TestClass), typeof(int) };

            DynamicMethod method         = new DynamicMethod("Method", typeof(int), parameterTypes, module, skipVisibility);
            MethodInfo    baseDefinition = method.GetBaseDefinition();

            Assert.Equal(method, baseDefinition);
        }
コード例 #5
0
ファイル: DynamicMethodTest.cs プロジェクト: zhufengGNSS/mono
        [Test]         // bug #78253
        public void DynamicMethodReference()
        {
            DynamicMethod hello = new DynamicMethod("Hello",
                                                    typeof(int),
                                                    new Type[] { typeof(string) },
                                                    typeof(DynamicMethodTest).Module);

            Assert.IsNull(hello.DeclaringType, "#1");

            DynamicMethod write = new DynamicMethod("Write",
                                                    typeof(int),
                                                    new Type[] { typeof(string) },
                                                    typeof(DynamicMethodTest));

            Assert.IsNull(hello.DeclaringType, "#2");

            MethodInfo invokeWrite = write.GetBaseDefinition();

            ILGenerator helloIL = hello.GetILGenerator();

            helloIL.Emit(OpCodes.Ldarg_0);
            helloIL.EmitCall(OpCodes.Call, invokeWrite, null);
            helloIL.Emit(OpCodes.Ret);

            ILGenerator writeIL = write.GetILGenerator();

            writeIL.Emit(OpCodes.Ldc_I4_2);
            writeIL.Emit(OpCodes.Ret);

            HelloInvoker hi =
                (HelloInvoker)hello.CreateDelegate(typeof(HelloInvoker));
            int ret = hi("Hello, World!");

            Assert.AreEqual(2, ret, "#3");

            object[] invokeArgs = { "Hello, World!" };
            object   objRet     = hello.Invoke(null, invokeArgs);

            Assert.AreEqual(2, objRet, "#4");
        }
コード例 #6
0
 public override MethodInfo GetBaseDefinition() => m_owner.GetBaseDefinition();
コード例 #7
0
 public override MethodInfo GetBaseDefinition()
 {
     return(_dynamicMethod.GetBaseDefinition());
 }
コード例 #8
0
    private static MethodInfo CreateDynamicMethod(string name, Type[] parameterTypes)
    {
        var method = new DynamicMethod(name, typeof(void), parameterTypes);

        return(method.GetBaseDefinition());
    }