Ejemplo n.º 1
0
        /// <summary>
        /// 注册接口
        /// </summary>
        /// <typeparam name="TInterface">接口类型</typeparam>
        /// <typeparam name="TClass">接口的实际实现</typeparam>
        /// <param name="lifeCycle">生命周期</param>
        public static void Register <TInterface, TClass>(LifeCycleEnum lifeCycle = LifeCycleEnum.InstancePerDependency) where TClass : TInterface
        {
            var result = builder.RegisterType <TClass>().As <TInterface>().PropertiesAutowired();

            switch (lifeCycle)
            {
            case LifeCycleEnum.InstancePerDependency:
            default:
                result.InstancePerDependency();
                break;

            case LifeCycleEnum.InstancePerLifetimeScope:
                result.InstancePerLifetimeScope();
                break;

            case LifeCycleEnum.InstancePerMatchingLifetimeScope:
                result.InstancePerMatchingLifetimeScope();
                break;

            case LifeCycleEnum.InstancePerOwned:
                result.InstancePerOwned(typeof(TInterface));
                break;

            case LifeCycleEnum.SingleInstance:
                result.SingleInstance();
                break;

            case LifeCycleEnum.InstancePerRequest:
                result.InstancePerRequest();
                break;
            }
        }
Ejemplo n.º 2
0
        public void Execute(List <Entity> entitys)
        {
            foreach (Entity item in entitys)
            {
                LifeCycleEnum lifeEnum = item.GetValue <LifeCycleEnum>(LifeCycleComponentVariable.lifeCycle);
                switch (lifeEnum)
                {
                case LifeCycleEnum.Destory:
                    Observer.Instance.RecoverEntity(item);
                    break;

                case LifeCycleEnum.DelayDestory:
                    float delayTime = item.GetValue <float>(LifeCycleComponentVariable.dealyTime);
                    delayList.Add(new DelayEntity()
                    {
                        CurrentEntity = item, DelayTime = delayTime
                    });
                    break;

                case LifeCycleEnum.DontDestory:
                case LifeCycleEnum.None:
                default:
                    break;
                }
            }
        }
        public void Execute(List <Entity> entitys)
        {
            foreach (Entity item in entitys)
            {
                GameObject    obj      = item.GetValue <GameObject>(GameObjectComponentVariable.value);
                LifeCycleEnum lifeEnum = item.GetValue <LifeCycleEnum>(LifeCycleComponentVariable.lifeCycle);
                switch (lifeEnum)
                {
                case LifeCycleEnum.Destory:
                    GameObject.Destroy(obj);
                    break;

                case LifeCycleEnum.DelayDestory:
                    float delayTime = item.GetValue <float>(LifeCycleComponentVariable.dealyTime);
                    GameObject.Destroy(obj, delayTime);
                    break;

                case LifeCycleEnum.DontDestory:
                    GameObject.DontDestroyOnLoad(obj);
                    break;

                case LifeCycleEnum.None:
                default:
                    break;
                }
            }
        }
Ejemplo n.º 4
0
        protected override ExecutionRequest Create(Type objectType, JObject jObject)
        {
            LifeCycleEnum lifeCycle = jObject.GetValue("lifecycle").ToObject <LifeCycleEnum>();

            switch (lifeCycle)
            {
            case Enums.LifeCycleEnum.INSTALL:
                return(new InstallRequest());

            case Enums.LifeCycleEnum.UPDATE:
                return(new UpdateRequest());

            case Enums.LifeCycleEnum.UNINSTALL:
                return(new UninstallRequest());

            case Enums.LifeCycleEnum.EVENT:
                return(new EventRequest());

            case Enums.LifeCycleEnum.PING:
                return(new PingRequest());

            case Enums.LifeCycleEnum.CONFIGURATION:
                return(new ConfigurationRequest());

            case Enums.LifeCycleEnum.OAUTH_CALLBACK:
                return(new OAuthCallbackRequest());

            default:
                throw new NotImplementedException("Unknown value for LifeCycleEnum");
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 注册接口
        /// </summary>
        /// <typeparam name="TInterface">接口类型</typeparam>
        /// <typeparam name="TClass">接口的实际实现</typeparam>
        /// <param name="lifeCycle">生命周期</param>
        /// <param name="enableInterceptors">是否启用aop注册</param>
        public static void Register <TInterface, TClass, TIInterceptor>(LifeCycleEnum lifeCycle = LifeCycleEnum.InstancePerDependency, bool enableInterceptors = true)
            where TClass : TInterface
            where TIInterceptor : class, IInterceptor
        {
            var result = builder.RegisterType <TClass>().As <TInterface>().PropertiesAutowired();

            switch (lifeCycle)
            {
            case LifeCycleEnum.InstancePerDependency:
            default:
                result.InstancePerDependency();
                break;

            case LifeCycleEnum.InstancePerLifetimeScope:
                result.InstancePerLifetimeScope();
                break;

            case LifeCycleEnum.InstancePerMatchingLifetimeScope:
                result.InstancePerMatchingLifetimeScope();
                break;

            case LifeCycleEnum.InstancePerOwned:
                result.InstancePerOwned(typeof(TInterface));
                break;

            case LifeCycleEnum.SingleInstance:
                result.SingleInstance();
                break;

            case LifeCycleEnum.InstancePerRequest:
                result.InstancePerRequest();
                break;
            }

            //开启AOP
            if (enableInterceptors)
            {
                builder.RegisterType <TIInterceptor>().AsSelf();
                result.EnableInterfaceInterceptors().InterceptedBy(typeof(TIInterceptor));
            }
        }