コード例 #1
0
        private ShoppingCart Apply(ItemAddedToShoppingCart @event)
        {
            var newItems = new List <string>(Items)
            {
                @event.Item
            };

            return(new ShoppingCart {
                Id = Id, Items = newItems
            });
        }
コード例 #2
0
        private ShoppingCart Apply(ItemAddedToShoppingCart @event)
        {
            if (Id != @event.Id)
            {
                throw new InvalidOperationException("Attempted to add an item for a shopping cart with a different ID");
            }

            var newItems = new List <string>(Items)
            {
                @event.Item
            };

            return(new ShoppingCart {
                Id = Id, Items = newItems
            });
        }
コード例 #3
0
        public ICommandResult <ShoppingCart, IDomainEvent> Execute(AddItemToShoppingCart command)
        {
            var context = CommandExecutionContext.Create(this, ApplyEventRouter);

            var isNew = Id == null;

            if (isNew)
            {
                var shoppingCartCreated = new ShoppingCartCreated(command.Id);
                context = context.ApplyEvent(shoppingCartCreated);
            }

            var itemAddedToShoppingCart = new ItemAddedToShoppingCart(command.Id, command.Item);

            context = context.ApplyEvent(itemAddedToShoppingCart);

            return(context.Result);
        }
コード例 #4
0
        public ShoppingCartCommandResult Handle(AddItemToShoppingCart command)
        {
            var result = new ShoppingCartCommandResult(this).WithEventRouter(EventRouter);

            var isNew = Id == null;

            if (isNew)
            {
                var shoppingCartCreated = new ShoppingCartCreated(command.Id);
                result = result.ApplyEvent(shoppingCartCreated);
            }

            var itemAddedToShoppingCart = new ItemAddedToShoppingCart(command.Id, command.Item);

            result = result.ApplyEvent(itemAddedToShoppingCart);

            return(result);
        }
コード例 #5
0
ファイル: CartProjection.cs プロジェクト: okproject/ses
 public Task Handle(ItemAddedToShoppingCart e, EventEnvelope envelope)
 {
     Debug.WriteLine("Projected " + e.GetType().Name);
     return(Task.FromResult(0));
 }
コード例 #6
0
 private void Apply(ItemAddedToShoppingCart @event)
 {
     _count++;
 }
コード例 #7
0
 public void Handle(ItemAddedToShoppingCart message)
 {
     InMemoryDatabase.ShoppingCart[message.Id].Items++;
 }