public void SetUp()
        {
            iocProvider = new AutofacProvider($@"{ AppDomain.CurrentDomain.BaseDirectory}repoconfig\autofac.repo.reader.json",
                                              $@"{AppDomain.CurrentDomain.BaseDirectory}repoconfig\autofac.repo.writer.json");
            iocProvider.Build();
            agRepo = iocProvider.GetContainer().Resolve <IAgeGroupReaderRepositoryContract>();
            pRepo  = iocProvider.GetContainer().Resolve <IPersonReaderRepositoryContract>();

            agWRepo = iocProvider.GetContainer().Resolve <IAgeGroupWriterRepositoryContract>();
            pWRepo  = iocProvider.GetContainer().Resolve <IPersonWriterRepositoryContract>();
            Thread.Sleep(2000);
        }
        public void Repositories_Update_Person(int id, string firstName, string lastName, int age)
        {
            pWRepo = iocProvider.GetContainer().Resolve <IPersonWriterRepositoryContract>();
            for (int i = 0; i < 1; i++)
            {
                Thread.Sleep(1000);
                pWRepo.Create(new Person {
                    FirstName = "A", LastName = "B", Age = 3
                });
                pWRepo.Commit();
            }
            pWRepo = iocProvider.GetContainer().Resolve <IPersonWriterRepositoryContract>();
            var expect = new Person {
                Id = id, FirstName = firstName, LastName = lastName, Age = age
            };

            pWRepo.Update(expect);
            pWRepo.Commit();
        }
        public void SetUp()
        {
            iocProvider = new AutofacProvider($@"{ AppDomain.CurrentDomain.BaseDirectory}repoconfig\autofac.repo.reader.json",
                                              $@"{AppDomain.CurrentDomain.BaseDirectory}repoconfig\autofac.repo.writer.json",
                                              $@"{AppDomain.CurrentDomain.BaseDirectory}moduleconfig\autofac.modules.json");

            //add the configues out of configue files in PreBuild
            iocProvider.PreBuild((builder) => {
                //Interceptor only can be configured by code
                //PersonCommandHandler dependents object that registered in config file
                builder.RegisterType <PersonCommandHandler>()
                .As <IPersonCommandHandler>()
                .EnableInterfaceInterceptors();
                builder.Register(c => new CommandPropertyValidator());


                //Application services
                builder.RegisterType <PersonQueryService>()
                .As <IPersonQueryServiceContract>()
                .EnableInterfaceInterceptors();
                builder.RegisterType <PersonCommandService>()
                .As <IPersonCommandServiceContract>()
                .EnableInterfaceInterceptors();


                //Register ErrorHandler
                builder.RegisterType <UnKnownErrorHandler>()
                .As <IUnKnownErrorHandler>();
                builder.RegisterType <NegativeErrorHandler>()
                .As <INegativeErrorHandler>();

                //Register LoggerController
                builder.RegisterType <LoggerFactory>()
                .As <ILoggerFactory>();
                builder.RegisterType <LoggerController <VersionedEvent> >()
                .As <ILoggerController <VersionedEvent> >();
                builder.RegisterType <LoggerController <ExceptionEvent> >()
                .As <ILoggerController <ExceptionEvent> >();
                builder.RegisterType <LoggerController <UnKnownErrorEvent> >()
                .As <ILoggerController <UnKnownErrorEvent> >();
            });

            iocProvider.Build();
            handler = iocProvider.GetContainer().Resolve <IPersonCommandServiceContract>();
        }
 public void Init()
 {
     iocProvider.GetContainer().Resolve <IPersonReaderRepositoryContract>().Query();
 }