コード例 #1
0
ファイル: java.lang.invoke.cs プロジェクト: moayyaed/ikvm
        internal static Delegate CreateDynamicOnly(MethodWrapper mw, MethodType type)
        {
            FinishTypes(type);
            DynamicMethodBuilder dm = new DynamicMethodBuilder("CustomInvoke:" + mw.Name, type, null, mw, null, null, true);

            dm.ilgen.Emit(OpCodes.Ldarg_0);
            if (mw.IsStatic)
            {
                dm.LoadNull();
                dm.BoxArgs(0);
            }
            else
            {
                dm.Ldarg(0);
                dm.BoxArgs(1);
            }
            dm.Callvirt(typeof(MethodWrapper).GetMethod("Invoke", BindingFlags.Instance | BindingFlags.NonPublic));
            dm.UnboxReturnValue();
            dm.Ret();
            return(dm.CreateDelegate());
        }