protected override void Load(ContainerBuilder builder) { builder.RegisterType <AkkaCommitPipeline>().SingleInstance(); builder.Register(c => { var eventStoreLogger = c.Resolve <ILogger>(); Wireup wireup = useCommitPipeline ? Wireup.Init().HookIntoPipelineUsing(c.Resolve <AkkaCommitPipeline>(), c.ResolveOptional <ICustomPipelineHook>()) : Wireup.Init(); var eventStore = wireup .LogTo(type => eventStoreLogger) .UsingSqlPersistence(c.Resolve <IConnectionFactory>()) .WithDialect(new MsSqlDialect()) .InitializeStorageEngine() .UsingCustomSerialization(new JsonSerializer()) .Build(); return(eventStore); }).SingleInstance(); builder.Register(c => c.Resolve <IStoreEvents>().Advanced).SingleInstance(); builder.RegisterType <SharedEventApplicationRoutes>() .As <ISharedEventApplicationRoutes>() .SingleInstance(); builder.RegisterType <AggregateFactory>() .As <IConstructAggregates>() .SingleInstance(); builder.RegisterType <ConflictDetector>() .As <IDetectConflicts>() .SingleInstance(); builder.RegisterType <EventStoreRepository>() .As <IRepository>() .InstancePerDependency(); builder.RegisterType <InMemoryCommitSerialiserCache>() .As <IInMemoryCommitSerialiserCache>(); }