/// <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); }
/// <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); }