//public DataIoc() => Ioc = new IocFactory(); private static IocFactory RegisterIoc() { var ic = new IocFactory(); ic.RegisterSingleton <IMitglieder, Mitglieder>(); ic.RegisterSingleton <IDienstAdminViewEdit, DienstAdminViewEdit>(); ic.RegisterSingleton <IJsonSerializerDeserialize, JsonSerializerDeserialize>(); ic.RegisterSingleton <IAuswählenAdmin, AuswählenAdmin>(); ic.RegisterSingleton <IAuswählen, Auswählen>(); ic.RegisterSingleton <IAuswählenView, AuswählenView>(); ic.RegisterSingleton <ISetSettings, SetSettings>(); ic.RegisterSingleton <IFromSettings, FromSettings>(); ic.RegisterSingleton <IIntoSettings, IntoSettings>(); ic.RegisterSingleton <IGeneralSelects, GeneralSelects>(); ic.RegisterSingleton <IIntoCoupon, IntoCoupon>(); return(ic); }
public void ServiceProviderTest() { var resolver = IocFactory.CreateRegistry() .AddSingleton <IDictionaryService>(x => DictionaryService.Current) .AddSingleton <ITestService>(x => new TestService()) .GetResolver(); var propertyService = resolver.Resolve <IDictionaryService>(); Assert.NotNull(propertyService); propertyService.SetEntry("name", "Kilroy"); Assert.Equal("Kilroy", propertyService.GetEntry <string>("name")); var testService = resolver.Resolve <ITestService>(); Assert.Equal("Kilroy is here!", testService.Test()); }
public void Intercept_Test() { IocFactory.Register( Component.For <IConfigurationUtilityMock>() .ImplementedBy <ConfigurationUtilityMock>(), Component.For <ILog>() .ResolveDependencies() .ImplementedBy <FileLog>() .ImplementedBy <EventViewerLog>() .Interceptor <LogInterceptor>() ); ILog log = IocFactory.Resolve <ILog>(); log.Save("Test", "Test Message"); }
public void CalculateChange_NegativeProductAmount() { ChangeManager changeManager = new ChangeManager(); IocFactory.Register <IConfigurationUtility, ConfigurationUtilityMock>(); ChangeRequest changeRequest = new ChangeRequest(); changeRequest.PaidAmount = 100; changeRequest.ProductAmount = -100; ChangeResponse changeResponse = changeManager.CalculateChange(changeRequest); Assert.IsNotNull(changeResponse); Assert.IsNotNull(changeResponse.ErrorReport); Assert.AreEqual(changeResponse.ErrorReport.Count(), 1); Assert.AreEqual(changeResponse.ErrorReport[0].Field, "ChangeRequest.ProductAmount"); Assert.AreEqual(changeResponse.ChangeAmount, 0); }
public void IocFactory_Resolve_Test() { IocFactory.Register( Component.For <IConfigurationUtilityMock>() .ImplementedBy <ConfigurationUtilityMock>() ); IConfigurationUtilityMock mock = IocFactory.Resolve <IConfigurationUtilityMock>(); Assert.IsNotNull(mock); mock.TestValue = "Banana"; IConfigurationUtilityMock mock2 = IocFactory.Resolve <IConfigurationUtilityMock>(); Assert.IsNotNull(mock2); Assert.IsNull(mock2.TestValue); }
public static BaseLogUtility CreateLogUtility() { // Obtém uma instancia do utilitário de acesso ao arquivo de configuração. IConfigurationUtility configurationUtility = IocFactory.Resolve <IConfigurationUtility>(); switch (configurationUtility.LogType) { case LogUtilityType.File: return(new FileLogUtility(configurationUtility.LogFilePath, configurationUtility.LogFileName)); case LogUtilityType.Database: return(new DatabaseLogUtility()); case LogUtilityType.EventLog: default: return(new EventLogUtility()); } }
private void InitializeContainer(ServiceProvider serviceProvider) { IocFactory.Container().Register(typeof(IEntityValidator <>), typeof(BaseEntityValidator <>).Assembly, LifeCycleType.Scoped); IocFactory.Container().Register <IUnitofWork, UnitOfWork>(LifeCycleType.Scoped); IocFactory.Container().Register <IUserRepository, UserRepository>(LifeCycleType.Scoped); IocFactory.Container().Register(typeof(ILogger <>), typeof(ILogger <>).Assembly, LifeCycleType.Scoped); IocFactory.Container().RegisterMediateR(new List <Assembly>() { AppDomain.CurrentDomain.GetAssemblies().SingleOrDefault(w => w.GetName().Name == "Core.Domain") }); IocFactory.Container().Register <IIdentityService>(() => ServiceProxy <IIdentityService> .Create( IocFactory.Container().GetInstance <IdentityService>(), serviceProvider.GetRequiredService <ILogger <IIdentityService> >()), LifeCycleType.Scoped); }
public void IocFactory_RegisterInstance() { IPerson pedro = new Pedro(); pedro.Age = 90; IocFactory.Register( Component.For <IPerson>() .ImplementedBy <Odilon>() .Instance(pedro).IsDefault() .ImplementedBy <Guilherme>() ); IPerson person = IocFactory.Resolve <IPerson>(); Assert.IsNotNull(person); Assert.IsInstanceOfType(person, typeof(Pedro)); Assert.AreEqual(90, person.Age); }
public void UserTypeAndPrimitiveTypeConstructor_Test() { IocFactory.Reset(); IocFactory.Register( Component.For <IMultipleParametersConstructor>().ImplementedBy <MultipleParametersConstructor>() ); IUserPrincipal userPrincipal = new UserPrincipal(); userPrincipal.Login = "******"; string accessToken = Guid.NewGuid().ToString(); IMultipleParametersConstructor constructor = IocFactory.Resolve <IMultipleParametersConstructor>(userPrincipal, accessToken); Assert.IsNotNull(constructor); Assert.AreEqual("banana", userPrincipal.Login); }
public void IocTestUsingResolutionType() { IDisposableService disposableService; using (var resolver = IocFactory.CreateRegistry() .AddSingleton <ILogger, TestLogWriter>() .AddSingleton <IFooService, FooService>() .AddSingleton <IBarService, BarService>() .AddSingleton <IDisposableService, DisposableService>() .GetResolver()) { //do the actual work here var bar = (IBarService)resolver.Resolve(typeof(IBarService)); bar.DoSomeRealWork(); disposableService = resolver.Resolve <IDisposableService>(); } Assert.True(disposableService.IsDisposed); }
/// <summary> /// Obtém o processador adequado para o valor do troco a ser retornado. /// </summary> /// <param name="changeAmount">Valor do troco a ser processado.</param> /// <returns>Retorna o processador a ser utilizado para o cálculo do troco.</returns> public static IProcessor Create(ulong changeAmount) { IocFactory.Register <IProcessor, BillProcessor>(); IocFactory.Register <IProcessor, CandyProcessor>(); IocFactory.Register <IProcessor, CoinProcessor>(); IocFactory.Register <IProcessor, DilmaProcessor>(); // Lista dos tipos de processadores disponíveis. IProcessor[] processorCollection = new IProcessor[] { IocFactory.ResolveSpecific <IProcessor>("ChangeMachine.Core.Processors.BillProcessor"), IocFactory.ResolveSpecific <IProcessor>("ChangeMachine.Core.Processors.CandyProcessor"), IocFactory.ResolveSpecific <IProcessor>("ChangeMachine.Core.Processors.CoinProcessor"), IocFactory.ResolveSpecific <IProcessor>("ChangeMachine.Core.Processors.DilmaProcessor") }; // Adicione novos processadores acima desta linha. Nullable <uint> closestValue = null; BaseProcessor selectedProcessor = null; // Analisa cada processador e localiza aquele que possui um valor mais próximo possível do troco a ser retornado. foreach (BaseProcessor processor in processorCollection) { // Obtém o valor mais próximo do troco, deste processador. IEnumerable <uint> currentClosestValue = processor.GetAcceptedValues().Where(v => v <= changeAmount); if (currentClosestValue.Any() == false) { continue; } // Se o valor encontrado estiver mais próximo do valor do troco anteriormente encontrado, substitui o valor. if (closestValue.HasValue == false || currentClosestValue.Max() > closestValue) { closestValue = currentClosestValue.Max(); selectedProcessor = processor; } } return(selectedProcessor); }
public void Calculate_GetChangeDataWithCoinsOnly_Test() { ConfigurationUtilityMock mock = new ConfigurationUtilityMock(); mock.LogPath = "C:\\Logs\\Test"; IocFactory.Register( Component.For <IConfigurationUtility>().Instance(mock), Component.For <ILog>().ImplementedBy <FileLog>().IsDefault() ); CadeMeuTrocoManager manager = new CadeMeuTrocoManager(); CalculateRequest request = new CalculateRequest(); request.ProductAmountInCents = 100; request.PaidAmountInCents = 140; CalculateResponse response = manager.Calculate(request); Assert.IsNotNull(response); Assert.IsTrue(response.Success == true); Assert.IsTrue(response.ChangeAmount == 40); Assert.IsTrue(response.ChangeCollection.Count() == 1); ChangeData changeData = response.ChangeCollection.First(); Assert.IsTrue(changeData.Name == "Coin"); Assert.IsTrue(changeData.ChangeDictionary.Count() == 3); Assert.IsTrue(changeData.ChangeDictionary.ContainsKey(25) == true); Assert.IsTrue(changeData.ChangeDictionary.ContainsKey(10) == true); Assert.IsTrue(changeData.ChangeDictionary.ContainsKey(5) == true); Assert.AreEqual(1, changeData.ChangeDictionary[25]); Assert.AreEqual(1, changeData.ChangeDictionary[10]); Assert.AreEqual(1, changeData.ChangeDictionary[5]); }
public void IocFactory_Interceptor_Test() { IocFactory.Register( Component.For <IConfigurationUtilityMock>() .ImplementedBy <ConfigurationUtilityMock>() .Interceptor <LogInterceptor>() ); IConfigurationUtilityMock mock = IocFactory.Resolve <IConfigurationUtilityMock>(); Assert.IsNotNull(mock); mock.TestValue = "Teste"; Assert.AreEqual("Intercepted Teste", mock.TestValue); string name = mock.GetName("Terra"); Assert.AreEqual("Intercepted Terra Mock 1", name); string testValue = mock.TestValue; Assert.AreEqual("Intercepted Teste", testValue); }
/// <summary> /// Setup the service registry. /// </summary> private void SetupRegistry() { Registry = IocFactory.CreateRegistry(); // .AddLogging(builder => builder.AddConsole().AddDebug()); }
public void AbstractContructorParameter_Test() { IocFactory.Register(Component.For <IMyComponent>().ImplementedBy <MyComponent>()); IMyComponent myComponent = IocFactory.Resolve <IMyComponent>(new Dependency()); }
public static ILogger Create(LogRepositoryEnum logRepository) { IConfigurationUtility configurationUtility = IocFactory.Resolve <IConfigurationUtility>(); return(IocFactory.ResolveSpecific <ILogger>(logRepository.ToString(), configurationUtility)); }
public void Prepare() { IocFactory.Reset(); }
public void Configuration(IAppBuilder app) { ConfigureAuth(app); IocFactory.Register( Component.For <IConfigurationUtility>().ImplementedBy <ConfigurationUtility>()); }
public TestRepository() { utility = IocFactory.Resolve <IConfigurationUtility>(); }
public DictionaryServiceTest() { Resolver = IocFactory.CreateRegistry() .AddSingleton <IDictionaryService>(x => DictionaryService.Current) .GetResolver(); }
public static void ClassInitialize(TestContext testContext) { IocFactory.Register <IConfigurationUtility, ConfigurationUtilityMock>(); }
public IServiceProvider Install(IServiceCollection services, string projectName, WebPortalType webType = WebPortalType.WebApi) { //TODO: 【Beta版本】简单实现,后续详细设计。 var builder = new ContainerBuilder(); //测试代码services == null, 此处需要重构。 if (services != null) { builder.Populate(services); } // TODO: Add to config file. var strAssembly = (webType == WebPortalType.WebApplication ? "WebUI" : "WebApi"); //var assemblyApi = Assembly.Load($"Craftsman.{projectName}.WebApi"); var assemblyWebPortal = Assembly.Load($"Craftsman.{projectName}.{strAssembly}"); var assemblyDomain = Assembly.Load($"Craftsman.{projectName}.Domain"); var assemblyInfrastructure = Assembly.Load($"Craftsman.{projectName}.Infrastructure"); var assemblyCore = Assembly.Load("Craftsman.Core"); var assemblies = new Assembly[] { assemblyWebPortal, assemblyDomain, assemblyInfrastructure, assemblyCore }; var typeInfrastructure = assemblyInfrastructure.GetTypes(); // Autofac doc - http://autofac.readthedocs.io //程序结构级别注入 //Register Framework Dependency. builder.RegisterAssemblyTypes(assemblyWebPortal) .PropertiesAutowired() .Where(type => typeof(IController).IsAssignableFrom(type) && !type.GetTypeInfo().IsAbstract); builder.RegisterAssemblyTypes(assemblies) .PropertiesAutowired() .Where(type => typeof(ITransientDependency).IsAssignableFrom(type) && !type.GetTypeInfo().IsAbstract) .AsImplementedInterfaces().InstancePerLifetimeScope(); builder.RegisterAssemblyTypes(assemblies) .PropertiesAutowired() .Where(type => typeof(ISingletonDependency).IsAssignableFrom(type) && !type.GetTypeInfo().IsAbstract) .AsImplementedInterfaces().SingleInstance(); builder.RegisterAssemblyTypes(assemblies) .PropertiesAutowired() .Where(type => typeof(IPolymorphismDependency).IsAssignableFrom(type) && !type.GetTypeInfo().IsAbstract) .AsSelf().InstancePerLifetimeScope(); //注册 IRepository<TEntity> 到Ioc容器 #region Ef RepositoryBase //var efReposutoryType = GetImplementForGenericType(assemblyInfrastructure, typeof(EfRepositoryBase<,>)); //if (efReposutoryType != null) //{ // builder.RegisterGeneric(GetImplementForGenericType(assemblyInfrastructure, typeof(EfRepositoryBase<,>))) // .As(typeof(IRepository<,>)).InstancePerDependency(); // builder.RegisterGeneric(GetImplementForGenericType(assemblyInfrastructure, typeof(EfRepositoryBase<>))) // .As(typeof(IRepository<>)).InstancePerDependency(); //} #endregion #region Dapper RepositoryBase //builder.RegisterGeneric(typeof(DapperRepositoryBase<,>)).As(typeof(IRepository<,>)).InstancePerDependency(); //builder.RegisterGeneric(typeof(DapperRepositoryBase<>)).As(typeof(IRepository<>)).InstancePerDependency(); builder.RegisterGeneric(typeof(DapperRepositoryBase <,>)).As(typeof(IRepository <,>)).InstancePerLifetimeScope(); builder.RegisterGeneric(typeof(DapperRepositoryBase <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope(); #endregion //框架组件级别注入 // TODO: Add to config file. //Session组件注入 builder.RegisterType <HardCodeSession>().As <ISession>().PropertiesAutowired().InstancePerLifetimeScope(); //Register ISession: 请求级别。 //Log Type lotType = FindLogType(typeInfrastructure); builder.RegisterType(lotType).As <ILogger>().PropertiesAutowired().InstancePerLifetimeScope(); //builder.RegisterType<DemoLogger>().As<ILogger>().PropertiesAutowired().SingleInstance(); //Register ILogger:单例。 #region TODO: 需要优化处理方式,使用框架接口,ISingletonDependency,ITransientDependency,IPolymorphismDependency //外部资源组件注入(TODO 准备移除~~, IConfigManager替代) builder.RegisterType <DbResourceManager>().As <IDbResourceManager>().PropertiesAutowired().InstancePerLifetimeScope(); //配置组件注入 builder.RegisterType <HardCodeConfigManager>().As <IConfigManager>().PropertiesAutowired().SingleInstance(); //消息组件注入 builder.RegisterType <KafkaMessageBroker>().As <IMessageBroker>().PropertiesAutowired().SingleInstance(); //对象映射组件注入 builder.RegisterType <SimpleObjectMapper>().As <IObjectMapper>().PropertiesAutowired().SingleInstance(); //缓存组件注入 builder.RegisterType <DemoCacheManager>().As <ICacheManager>().PropertiesAutowired().SingleInstance(); //文件服务注入 builder.RegisterType <SftpFileManager>().As <IFileManager>().PropertiesAutowired().SingleInstance(); #endregion this.ApplicationContainer = builder.Build(); IocFactory.Set(this.ApplicationContainer); return(new AutofacServiceProvider(this.ApplicationContainer)); }
public static void ConfigurationInitialize(TestContext testContext) { // Registra as implementações IocFactory.Register <IConfigurationUtility, ConfigurationUtilityMock>(); }