/// <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); }
public void Value_Test3() { var parentContainer = new IocContainer(); var childContainer = new IocContainer(parentContainer); parentContainer.AddValue("value1", 1); parentContainer.AddValue("value2", "2"); parentContainer.AddValue("value3", false); childContainer.AddValue("value1", 9999); childContainer.AddValue("value2", "9999"); childContainer.AddService(typeof(IValueService), typeof(ValueService1)); parentContainer.AddService(typeof(IValueService), typeof(ValueService2)); var childService = childContainer.GetService(typeof(IValueService)) as IValueService; var parentService = parentContainer.GetService(typeof(IValueService)) as IValueService; Assert.Equal(1, parentService.Value1); Assert.Equal("2", parentService.Value2); Assert.Equal(false, parentService.Value3); Assert.Equal(9999, childService.Value1); Assert.Equal("9999", childService.Value2); Assert.Equal(false, childService.Value3); }
public void DefaultMappingTest() { var container = new IocContainer(); var service = container.GetService <IDefaultMappingService>(); Assert.IsType <DefaultMappingService2>(service); container.DestroyAll(); container.AddService(typeof(IDefaultMappingService)); service = container.GetService <IDefaultMappingService>(); Assert.IsType <DefaultMappingService2>(service); container.DestroyAll(); container.AddService(typeof(IDefaultMappingService), typeof(DefaultMappingService)); service = container.GetService <IDefaultMappingService>(); Assert.IsType <DefaultMappingService>(service); }
public void GetServiceTest2() { var type = typeof(DefaultService1); var container = new IocContainer(); container.AddService(type, true); var childContainer = new IocContainer(container); Assert.Equal(childContainer.GetService(type), container.GetService(type)); }
public void AddService_TypeObjectBoolean_Test1() { var container = new IocContainer(); container.AddService(typeof(IService2), new XService2()); var childContainer = new IocContainer(container); Assert.IsAssignableFrom<XService2>(childContainer.GetService(typeof(IService2))); }
/// <summary> /// 创建一个用于命令模型的服务容器。 /// </summary> /// <param name="userFactory">用户工厂。</param> /// <param name="redisProvider">Redis 提供程序。若为 null 值表示启用基于应用程序域各种提供程序的服务容器。</param> /// <returns>返回一个服务容器。</returns> public static IIocContainer CreateContainer(IUserFactory userFactory , 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); } return(container); }
public void GetUserTest() { var container = new IocContainer(); var username = "******"; var s = new SimpleCommandModelService(container); Assert.Null(s.User); container.AddService <IUserFactory>(new UserFactory(ioc => username)); Assert.Equal(username, s.User); }
public void AddService_TypeObjectBoolean_Test1() { var container = new IocContainer(); container.AddService(typeof(IService2), new XService2()); var childContainer = new IocContainer(container); Assert.IsAssignableFrom <XService2>(childContainer.GetService(typeof(IService2))); }
public void GetServiceTest3() { var type = typeof(DefaultService1); var container = new IocContainer(); var childContainer = new IocContainer(container); container.AddService(type, true); childContainer.AddService(type, true); Assert.NotEqual(childContainer.GetService(type), container.GetService(type)); }
public void LastMappingTest2() { var container = new IocContainer(); container.AddValue("baseValue1", 10); container.AddValue("baseValue2", 20); container.AddService(typeof(LastMapperTestModel)); var ex = Assert.Throws <ArgumentException>(() => container.GetService(typeof(LastMapperTestModel), 50)); Assert.Equal("value1", ex.ParamName); }
public void ContainsServiceServiceTest1() { var container = new IocContainer(); var childContainer = new IocContainer(container); var itype = typeof(IService2); childContainer.AddService(itype, lmp => new XService2(), promote: true); Assert.True(childContainer.ContainsService(itype)); childContainer.RemoveService(itype); Assert.False(childContainer.ContainsService(itype)); Assert.True(childContainer.ContainsService(itype, true)); }
public void GetUserTest() { var container = new IocContainer(); var command = new SimpleCommand(); var context = new Context(container, command); Assert.Null(context.User); var username = "******"; container.AddService <IUserFactory>(new UserFactory(ioc => username)); Assert.Equal(username, context.User); }
public void TypeValue_Test3() { var parentContainer = new IocContainer(); var childContainer = new IocContainer(parentContainer); parentContainer.AddValue("value1", 1); parentContainer.AddValue("value2", "2"); parentContainer.AddValue("value3", false); childContainer.AddValue("value1", 9999); childContainer.AddValue("value2", "9999"); childContainer.AddService(typeof(IValueService), typeof(ValueService1)); parentContainer.AddService(typeof(IValueService), typeof(ValueService2)); var childService = childContainer.GetService(typeof(IValueService)) as IValueService; var parentService = parentContainer.GetService(typeof(IValueService)) as IValueService; Assert.Equal(1, parentService.Value1); Assert.Equal("2", parentService.Value2); Assert.Equal(false, parentService.Value3); Assert.Equal(9999, childService.Value1); Assert.Equal("9999", childService.Value2); Assert.Equal(false, childService.Value3); childContainer.AddValue(typeof(IValueService), "value2", "8888"); var childService2 = childContainer.GetService(typeof(IValueService)) as IValueService; Assert.Equal(9999, childService2.Value1); Assert.Equal("9999", childService2.Value2); //- 因为已映射,所以这里的值还是历史值 Assert.Equal(false, childService2.Value3); childContainer.RemoveService(typeof(IValueService)); childContainer.AddService(typeof(IValueService), typeof(ValueService1)); var childService3 = childContainer.GetService(typeof(IValueService)) as IValueService; Assert.Equal("8888", childService3.Value2); }
void ITestMethodHandler.Start() { var container = new IocContainer(); this._factory = new ExecutorFactory(container); var methodInfo = TestContext.MethodInfo.MethodInfo; var db = methodInfo.GetAttribute <DbAttribute>(); var provider = db == null ? DbEngineProvider.MicrosoftSqlServerCompact : db.Provider; switch (provider) { case DbEngineProvider.MicrosoftSqlServer: this._testManager = new MsSqlTestManager(); break; default: this._testManager = new MsCeTestManager(); break; } Manager = this._testManager.Manager; container.AddService(this.Manager); container.AddService <IDbEngine>(lmps => this.Context); var methodScripts = methodInfo.GetAttribute <ScriptsAttribute>(); if (methodScripts != null) { this._testManager.Execute(methodScripts.Keys); } else { var classScripts = this.GetType().GetAttribute <ScriptsAttribute>(); if (classScripts != null) { this._testManager.Execute(classScripts.Keys); } } }
public void LastMappingTest1() { var container = new IocContainer(); container.AddValue("baseValue1", 10); container.AddValue("baseValue2", 20); container.AddService(typeof(LastMapperTestModel)); var model = container.GetService(typeof(LastMapperTestModel), 50, 80) as LastMapperTestModel; Assert.Equal(10, model.BaseValue1); Assert.Equal(20, model.BaseValue2); Assert.Equal(80, model.Value1); Assert.Equal(50, model.Value2); }
public void AddService_TypeBooleanBoolean_Test2() { var type = typeof(DefaultService1); var itype = typeof(IService1); var container = new IocContainer(); container.AddService(type, true); Assert.NotNull(container.GetService(type)); Assert.NotNull(container.GetService(itype)); Assert.Equal(container.GetService(type), container.GetService(type)); Assert.Equal(container.GetService(type), container.GetService(itype)); Assert.IsAssignableFrom(type, container.GetService(itype)); }
public void RemoveServiceTest2() { var container = new IocContainer(); var childContainer = new IocContainer(container); var itype = typeof(IService2); childContainer.AddService(itype, lmp => new XService2(), promote: true); Assert.True(container.ContainsService(itype)); Assert.True(childContainer.ContainsService(itype)); container.AddService(itype, lmp => new DefaultService2()); Assert.IsAssignableFrom <XService2>(childContainer.GetService(itype)); Assert.IsAssignableFrom <DefaultService2>(container.GetService(itype)); childContainer.RemoveService(itype, true); Assert.False(container.ContainsService(itype)); Assert.False(childContainer.ContainsService(itype)); }
public void LastMappingTest2() { var container = new IocContainer(); container.AddValue("baseValue1", 10); container.AddValue("baseValue2", 20); container.AddService(typeof(LastMapperTestModel)); var ex = Assert.Throws<ArgumentException>(() => container.GetService(typeof(LastMapperTestModel), 50)); Assert.Equal("value1", ex.ParamName); }
public void DefaultMappingTest2() { var container = new IocContainer(); var service = container.GetService<DefaultMappingCtorService>(); Assert.IsType<DefaultMappingService2>(service.InnerService); container.DestroyAll(); container.AddService(typeof(IDefaultMappingService), typeof(DefaultMappingService)); service = container.GetService<DefaultMappingCtorService>(); Assert.IsType<DefaultMappingService>(service.InnerService); }
public void RemoveServiceTest1() { var container = new IocContainer(); var childContainer = new IocContainer(container); var itype = typeof(IService2); childContainer.AddService(itype, lmp => new XService2(), promote: true); Assert.True(container.ContainsService(itype)); Assert.True(childContainer.ContainsService(itype)); container.AddService(itype, lmp => new DefaultService2()); Assert.IsAssignableFrom<XService2>(childContainer.GetService(itype)); Assert.IsAssignableFrom<DefaultService2>(container.GetService(itype)); childContainer.RemoveService(itype); Assert.IsAssignableFrom<DefaultService2>(childContainer.GetService(itype)); Assert.IsAssignableFrom<DefaultService2>(container.GetService(itype)); Assert.False(childContainer.ContainsService(itype)); }