예제 #1
0
        static void Main(string[] args)
        {
            InjectContainer.RegisterType <IDomainRepository, DomainRepository>();
            InjectContainer.RegisterType <IEventStorage, SQLServerEventStorage>();
            InjectContainer.RegisterInstance <IEventPublisher>(new RabbitMQEventPublisher("amqp://localhost:5672"));
            InjectContainer.RegisterType <IEventDBConnectionStringProvider, AppSettingEventDBConnectionStringProvider>();

            //这一部分需要重构到配置文件中
            InjectContainer.RegisterType <IInventoryReadDBConnectionStringProvider, AppsettingInventoryReadDBConnectionStringProvider>();
            InjectContainer.RegisterType <IInventoryWriteDBConnectionStringProvider, AppsettingInventoryWriteDBConnectionStringProvider>();
            InjectContainer.RegisterType <IInventoryReportDataAccessor, InventoryReportDataAccessor>();

            InjectContainer.RegisterType <IRentalReadDBConnectionStringProvider, AppsettingRentalReadDBConnectionStringProvider>();
            InjectContainer.RegisterType <IRentalWriteDBConnectionStringProvider, AppsettingRentalWriteDBConnectionStringProvider>();
            InjectContainer.RegisterType <IRentalReportDataAccessor, RentalReportDataAccessor>();
            InjectContainer.RegisterType <ICommandTracker, SignalRCommandTracker>();


            var handlers = BuildHandlerConfigurations();

            HandlerRegister register = new HandlerRegister();

            foreach (var handler in handlers)
            {
                Console.WriteLine($"Starting handler '{handler.Name}'");
                RegisterCommandHandlers(handler.LibraryName);
                RegisterEventHandlers(handler.LibraryName);
                register.RegisterAndStart(handler.LibraryName);

                Console.WriteLine($"Started handler '{handler.Name}'");
            }
        }
예제 #2
0
 private void InjectService()
 {
     InjectContainer.RegisterInstance <ICommandPublisher>(new RabbitMQCommandPublisher("amqp://localhost:5672"));
     InjectContainer.RegisterType <IInventoryReadDBConnectionStringProvider, AppsettingInventoryReadDBConnectionStringProvider>();
     InjectContainer.RegisterType <IInventoryWriteDBConnectionStringProvider, AppsettingInventoryWriteDBConnectionStringProvider>();
     InjectContainer.RegisterType <IInventoryReportDataAccessor, InventoryReportDataAccessor>();
     InjectContainer.RegisterType <ICommandTracker, SignalRCommandTracker>();
 }
예제 #3
0
 protected virtual void BeforeInject()
 {
     InjectContainer.RegisterType <IConfigurationReader, ConfigurationReader>();
     InjectContainer.RegisterInstance <ILogHelper>(new Log4netHelper());
     #if DEBUG
     InjectContainer.RegisterInstance <IStringEncrypter>(new PlainTextEncrypter());
     #else
     InjectContainer.RegisterInstance <IStringEncrypter>(new StringEncrypter());
     #endif
 }
예제 #4
0
 protected virtual void InjectCommonLibraries()
 {
     InjectContainer.RegisterType <IQueryService, QueryService>();
     InjectContainer.RegisterInstance <ICommandBus>(new CommandBus());
 }