예제 #1
0
        /// <summary>
        /// 创建一个用于命令模型的服务容器。
        /// </summary>
        /// <param name="userFactory">用户工厂。</param>
        /// <param name="mockFactoryCallback">模拟的执行器工厂回调函数。</param>
        /// <param name="redisProvider">Redis 提供程序。若为 null 值表示启用基于应用程序域各种提供程序的服务容器。</param>
        /// <returns>返回一个服务容器。</returns>
        public static IIocContainer CreateContainer(IUserFactory userFactory
                                                    , Action <CommandModel.MockExecutorFactory> mockFactoryCallback = null
                                                    , IRedisProvider redisProvider = null)
        {
            if (userFactory == null)
            {
                throw new ArgumentNullException("userFactory");
            }

            var container = new IocContainer();

            container.AddService <IUserFactory>(userFactory);
            if (redisProvider != null)
            {
                container.AddService <IRedisProvider>(redisProvider);
            }

            if (mockFactoryCallback != null)
            {
                var executorFactory = new Aoite.CommandModel.MockExecutorFactory(container);
                mockFactoryCallback(executorFactory);
                container.AddService <CommandModel.IExecutorFactory>(executorFactory);
            }
            if (Db.Engine == null)
            {
                Lazy <IDbEngine> lazyEngine = new Lazy <IDbEngine>(() => new Aoite.Data.MsSqlEngine(""));
                container.AddService <IDbEngine>(lmps => Db.Engine == null ? lazyEngine.Value : Db.Context);
            }
            return(container);
        }
예제 #2
0
        /// <summary>
        /// 创建一个用于命令模型的服务容器。
        /// </summary>
        /// <param name="user">当前已授权的登录用户。</param>
        /// <param name="mockFactoryCallback">模拟的执行器工厂回调函数。</param>
        /// <param name="redisProvider">Redis 提供程序。若为 null 值表示启用基于应用程序域各种提供程序的服务容器。</param>
        /// <returns>返回一个服务容器。</returns>
        public static IIocContainer CreateContainer(object user = null
                                                    , Action <CommandModel.MockExecutorFactory> mockFactoryCallback = null
                                                    , IRedisProvider redisProvider = null)
        {
            var container = CreateContainer(new UserFactory(c => user));

            if (mockFactoryCallback != null)
            {
                var executorFactory = new Aoite.CommandModel.MockExecutorFactory(container);
                mockFactoryCallback(executorFactory);
                container.AddService <CommandModel.IExecutorFactory>(executorFactory);
            }
            return(container);
        }