//void OpenUIAsync(string UIName, XBehaviour behaviour, OpenUIParam openUIParam, Action<IUIEntity, XException> callback, params object[] args); static StackObject *OpenUIAsync_Callback_Name_Behavior_Param_Args(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, 6); ptr_of_this_method = ILIntepreter.Minus(__esp, 1); System.Object[] @args = (System.Object[]) typeof(System.Object[]).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 2); System.Action <TinaX.UIKit.IUIEntity, TinaX.XException> callback = (System.Action <TinaX.UIKit.IUIEntity, TinaX.XException>) typeof(System.Action <TinaX.UIKit.IUIEntity, TinaX.XException>).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 3); TinaX.UIKit.OpenUIParam openUIParam = (TinaX.UIKit.OpenUIParam) typeof(TinaX.UIKit.OpenUIParam).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 4); TinaX.XComponent.XBehaviour behaviour = (TinaX.XComponent.XBehaviour) typeof(TinaX.XComponent.XBehaviour).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 5); System.String UIName = (System.String) typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 6); TinaX.UIKit.IUIKit instance_of_this_method = (TinaX.UIKit.IUIKit) typeof(TinaX.UIKit.IUIKit).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); //依赖注入 m_XIL.InjectObject(behaviour); openUIParam.xBehaviour = null; openUIParam.DependencyInjection = false; instance_of_this_method.OpenUIAsync(UIName, openUIParam, (entity, err) => { if (err != null) { callback?.Invoke(entity, err); } else { if (entity.UIPage.UIMainHandler != null && entity.UIPage.UIMainHandler is XComponent.XComponent) { var xcomponent = entity.UIPage.UIMainHandler as XComponent.XComponent; XILXComponentUtil.InjectBindings(xcomponent, behaviour); if (behaviour is XUIBehaviour) { ((XUIBehaviour)behaviour).UIEntity = entity; } xcomponent.AddBehaviour(behaviour); } RedirectUIKitSafe.SetEntityIfXUIBehaviour(ref behaviour, ref entity); callback?.Invoke(entity, err); } }, @args); return(__ret); }
//Task<IUIEntity> OpenUIAsync(string UIName, XBehaviour behaviour, OpenUIParam openUIParam, params object[] args); private static StackObject *OpenUIAsync_Task_Name_Behaviour_Param_Args(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, 5); ptr_of_this_method = ILIntepreter.Minus(__esp, 1); System.Object[] args = (System.Object[]) typeof(System.Object[]).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 2); TinaX.UIKit.OpenUIParam openUIParam = (TinaX.UIKit.OpenUIParam) typeof(TinaX.UIKit.OpenUIParam).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 3); TinaX.XComponent.XBehaviour behaviour = (TinaX.XComponent.XBehaviour) typeof(TinaX.XComponent.XBehaviour).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 4); System.String @UIName = (System.String) typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 5); TinaX.UIKit.IUIKit instance_of_this_method = (TinaX.UIKit.IUIKit) typeof(TinaX.UIKit.IUIKit).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); //依赖注入 m_XIL.InjectObject(behaviour); openUIParam.xBehaviour = null; openUIParam.DependencyInjection = false; var task_entity = instance_of_this_method.OpenUIAsync(@UIName, openUIParam, args); task_entity.ToObservable() .ObserveOnMainThread() .SubscribeOnMainThread() .Subscribe(entity => { if (entity.UIPage.UIMainHandler != null && entity.UIPage.UIMainHandler is TinaX.XComponent.XComponent) { var xcomponent = entity.UIPage.UIMainHandler as TinaX.XComponent.XComponent; XILXComponentUtil.InjectBindings(xcomponent, behaviour); if (behaviour is XUIBehaviour) { ((XUIBehaviour)behaviour).UIEntity = entity; } xcomponent.AddBehaviour(behaviour); } RedirectUIKitSafe.SetEntityIfXUIBehaviour(ref behaviour, ref entity); }, e => { }); object obj_result_of_this_method = task_entity; if (obj_result_of_this_method is CrossBindingAdaptorType) { return(ILIntepreter.PushObject(__ret, __mStack, ((CrossBindingAdaptorType)obj_result_of_this_method).ILInstance)); } return(ILIntepreter.PushObject(__ret, __mStack, task_entity)); }
//IUIEntity OpenUI(string UIName, XBehaviour behaviour, params object[] args); private static StackObject *OpenUI_Name_Behavior_Args(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, 4); ptr_of_this_method = ILIntepreter.Minus(__esp, 1); System.Object[] @args = (System.Object[]) typeof(System.Object[]).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 2); TinaX.XComponent.XBehaviour behaviour = (TinaX.XComponent.XBehaviour) typeof(TinaX.XComponent.XBehaviour).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 3); System.String @UIName = (System.String) typeof(System.String).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); ptr_of_this_method = ILIntepreter.Minus(__esp, 4); TinaX.UIKit.IUIKit instance_of_this_method = (TinaX.UIKit.IUIKit) typeof(TinaX.UIKit.IUIKit).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack)); __intp.Free(ptr_of_this_method); //依赖注入 m_XIL.InjectObject(behaviour); var entity = instance_of_this_method.OpenUI(@UIName, @args); if (entity.UIPage.UIMainHandler != null && entity.UIPage.UIMainHandler is XComponent.XComponent) { var xcomponent = entity.UIPage.UIMainHandler as XComponent.XComponent; XILXComponentUtil.InjectBindings(xcomponent, behaviour); if (behaviour is XUIBehaviour) { ((XUIBehaviour)behaviour).UIEntity = entity; } xcomponent.AddBehaviour(behaviour); } RedirectUIKitSafe.SetEntityIfXUIBehaviour(ref behaviour, ref entity); object obj_result_of_this_method = entity; if (obj_result_of_this_method is CrossBindingAdaptorType) { return(ILIntepreter.PushObject(__ret, __mStack, ((CrossBindingAdaptorType)obj_result_of_this_method).ILInstance)); } return(ILIntepreter.PushObject(__ret, __mStack, entity)); }