コード例 #1
0
        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>();
        }