Пример #1
0
        //object Get(Type type, params object[] userParams);
        private static StackObject *Get_Type_ArrObject(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, 3);

            ptr_of_this_method = ILIntepreter.Minus(__esp, 1);
            System.Object[] @userParams = (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.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, 3);
            TinaX.Container.IServiceContainer instance_of_this_method = (TinaX.Container.IServiceContainer) typeof(TinaX.Container.IServiceContainer).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);

            string serviceName           = XILUtil.GetCatLibServiceName(@type);
            var    result_of_this_method = instance_of_this_method.Get(serviceName, @userParams);

            object obj_result_of_this_method = result_of_this_method;

            if (obj_result_of_this_method is CrossBindingAdaptorType)
            {
                return(ILIntepreter.PushObject(__ret, __mStack, ((CrossBindingAdaptorType)obj_result_of_this_method).ILInstance, true));
            }
            return(ILIntepreter.PushObject(__ret, __mStack, result_of_this_method, true));
        }
Пример #2
0
        //IBindData BindBuiltInService<TBuiltInService, TService, TConcrete>() where TBuiltInService : IBuiltInService;
        private static StackObject *BindBuiltInService_TBuiltInService_TService_TConcrete(ILIntepreter intp, StackObject *esp, IList <object> mStack, CLRMethod method, bool isNewObj)
        {
            var genericArguments = method.GenericArguments;

            if (genericArguments == null || genericArguments.Length != 3 || method.ParameterCount != 0)
            {
                throw new EntryPointNotFoundException();
            }

            var tBuildInService = XILUtil.ITypeToService(genericArguments[0]);
            var tService        = XILUtil.ITypeToService(genericArguments[1]);
            var tType           = XILUtil.ITypeToClrType(genericArguments[2]);

            ILRuntime.Runtime.Enviorment.AppDomain __domain = intp.AppDomain;
            StackObject *ptr_of_this_method;
            StackObject *__ret = ILIntepreter.Minus(esp, 1);

            ptr_of_this_method = ILIntepreter.Minus(esp, 1);
            TinaX.Container.IServiceContainer instance_of_this_method = (TinaX.Container.IServiceContainer) typeof(TinaX.Container.IServiceContainer).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, mStack));
            intp.Free(ptr_of_this_method);

            var result_of_this_method = instance_of_this_method.Bind(tBuildInService, tType, true).SetAlias(tService);

            return(ILIntepreter.PushObject(esp, mStack, result_of_this_method));
        }
        static StackObject *Get_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.Object[] @userParams = (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.Container.IServiceContainer instance_of_this_method = (TinaX.Container.IServiceContainer) typeof(TinaX.Container.IServiceContainer).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, __domain, __mStack));
            __intp.Free(ptr_of_this_method);

            var result_of_this_method = instance_of_this_method.Get <TinaX.UIKit.IUIKit>(@userParams);

            return(ILIntepreter.PushObject(__ret, __mStack, result_of_this_method));
        }
Пример #4
0
        //void Inject(object target);
        private static StackObject *Inject_Object(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.Object target = (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.Container.IServiceContainer instance_of_this_method = (TinaX.Container.IServiceContainer) typeof(TinaX.Container.IServiceContainer).CheckCLRTypes(StackObject.ToObject(ptr_of_this_method, domain, mStack));
            intp.Free(ptr_of_this_method);

            //instance_of_this_method.Inject(@target);
            XCore.MainInstance.Services.Get <IXILRuntime>().InjectObject(target);

            return(__ret);
        }