コード例 #1
0
        public static EventHandlerFactory NewEventHandlerFactory(
            Func <IRepository> aggregateRepositoryProvider,
            Func <IRepository> sagaRepositoryProvider,
            Func <IShoppingCartReadModelRepository> readModelRepositoryProvider,
            Func <IOrderReadModelRepository> orderReadModelRepositoryProvider,
            Func <IContextEventProducer> contextEventProducerProvider)
        {
            var eventHandlerFactory = new EventHandlerFactory();

            eventHandlerFactory.RegisterFactory(
                () => new ShoppingCartEventHandler(readModelRepositoryProvider()),
                typeof(CartCreated),
                typeof(ProductAddedToCart),
                typeof(ProductRemovedFromCart),
                typeof(CartEmptied),
                typeof(CartCheckedOut));

            eventHandlerFactory.RegisterFactory(
                () => new EventProcessing.ContextEventHandler(contextEventProducerProvider()),
                typeof(CompletedForShipping));

            eventHandlerFactory.RegisterFactory(
                () => new ShippingEventHandler(sagaRepositoryProvider()),
                typeof(CartCheckedOut),
                typeof(OrderCreated),
                typeof(PaymentReceived),
                typeof(ShippingAddressProvided),
                typeof(PaymentConfirmed),
                typeof(AddressConfirmed));

            eventHandlerFactory.RegisterFactory(
                () => new OrderEventHandler(orderReadModelRepositoryProvider()),
                typeof(OrderCreated),
                typeof(PaymentReceived),
                typeof(ShippingAddressProvided),
                typeof(OrderShipped),
                typeof(OrderDelivered),
                typeof(OrderCompleted));

            return(eventHandlerFactory);
        }
コード例 #2
0
        public static EventHandlerFactory NewEventHandlerFactory(
            Func <IRepository> aggregateRepositoryProvider,
            Func <IShipmentReadModelRepository> readModelRepositoryProvider,
            Func <IContextEventProducer> contextEventProducerProvider)
        {
            var eventHandlerFactory = new EventHandlerFactory();

            eventHandlerFactory.RegisterFactory(
                () => new EventProcessing.ShipmentEventHandler(aggregateRepositoryProvider()),
                typeof(OrderCompletedForShipping));

            eventHandlerFactory.RegisterFactory(
                () => new Readmodels.Shipping.ShipmentEventHandler(readModelRepositoryProvider()),
                typeof(ShipmentCreated),
                typeof(ShipmentStarted),
                typeof(ShipmentDelivered));

            eventHandlerFactory.RegisterFactory(
                () => new ContextEventHandler(contextEventProducerProvider()),
                typeof(ShipmentDelivered));

            return(eventHandlerFactory);
        }