| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | using System;using System.Collections.Generic;using ILRuntime.Runtime.Intepreter;using ILRuntime.Runtime.Stack;using ILRuntime.CLR.Method;using ILRuntime.CLR.TypeSystem;using System.Reflection;using ILRuntime.CLR.Utils;using FairyGUI;using UnityEngine;namespace GFGGame{    public class ILRuntimeHelper    {        public unsafe static void RegisterILRuntimeCLRRedirection(ILRuntime.Runtime.Enviorment.AppDomain appdomain)        {            //重定向            LitJson.JsonMapper.RegisterILRuntimeCLRRedirection(appdomain);            CLRMethod(appdomain);        }        private unsafe static void CLRMethod(ILRuntime.Runtime.Enviorment.AppDomain appdomain)        {            BindingFlags flag = BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.DeclaredOnly;            MethodBase method;            Type[] args;            Type type = typeof(FairyGUI.UIObjectFactory);            args = new Type[] { typeof(System.String), typeof(System.Type) };            method = type.GetMethod("SetPackageItemExtension", flag, null, args, null);            appdomain.RegisterCLRMethodRedirection(method, SetPackageItemExtension_0);        }        private unsafe static StackObject* SetPackageItemExtension_0(ILIntepreter __intp, StackObject* __esp, IList<object> __mStack, CLRMethod __method, bool isNewObj)        {            ILRuntime.Runtime.Enviorment.AppDomain __domain = __intp.AppDomain;            StackObject* ptr_of_this_method;            StackObject* __ret = ILIntepreter.Minus(__esp, 2);            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);            System.Type @type = (System.Type)typeof(System.Type).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));            __intp.Free(ptr_of_this_method);            ptr_of_this_method = ILIntepreter.Minus(__esp, 2);            System.String @url = (System.String)typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));            __intp.Free(ptr_of_this_method);            FairyGUI.UIObjectFactory.SetPackageItemExtension(@url, () => {                Debug.Log("il test " + @type.FullName);                return __domain.Instantiate<GComponent>(@type.FullName);            });            // FairyGUI.UIObjectFactory.SetPackageItemExtension (@url, @type);            return __ret;        }    }}
 |