Example #1
0
        //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);
        }
Example #2
0
        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());
        }
Example #3
0
        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);
        }
Example #5
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);
        }
Example #6
0
        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());
            }
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        /// <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]);
        }
Example #13
0
        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);
        }
Example #14
0
 /// <summary>
 /// Setup the service registry.
 /// </summary>
 private void SetupRegistry()
 {
     Registry = IocFactory.CreateRegistry();
     //    .AddLogging(builder => builder.AddConsole().AddDebug());
 }
Example #15
0
        public void AbstractContructorParameter_Test()
        {
            IocFactory.Register(Component.For <IMyComponent>().ImplementedBy <MyComponent>());

            IMyComponent myComponent = IocFactory.Resolve <IMyComponent>(new Dependency());
        }
Example #16
0
        public static ILogger Create(LogRepositoryEnum logRepository)
        {
            IConfigurationUtility configurationUtility = IocFactory.Resolve <IConfigurationUtility>();

            return(IocFactory.ResolveSpecific <ILogger>(logRepository.ToString(), configurationUtility));
        }
Example #17
0
 public void Prepare()
 {
     IocFactory.Reset();
 }
Example #18
0
 public void Configuration(IAppBuilder app)
 {
     ConfigureAuth(app);
     IocFactory.Register(
         Component.For <IConfigurationUtility>().ImplementedBy <ConfigurationUtility>());
 }
Example #19
0
 public TestRepository()
 {
     utility = IocFactory.Resolve <IConfigurationUtility>();
 }
Example #20
0
 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>();
 }