public ShoppingCart(ShoppingCartId id) : this() { ApplyChange(new StartedShopping { CartId = id }); }
ShoppingCart() { Register <StartedShopping>(_ => { _id = new ShoppingCartId(_.CartId); _checkedOut = false; _items = new Items(); }); Register <CheckedoutCart>(_ => _checkedOut = true); Register <AddedItemToCart>(_ => _items.Add(new Item(new ItemId(_.ItemId), _.Count))); Register <RemovedItemFromCart>(_ => _items.Remove(new ItemId(_.ItemId))); Register <IncrementedItemCountInCart>(_ => _items.Get(new ItemId(_.ItemId)).Increment()); Register <DecrementedItemCountInCart>(_ => _items.Get(new ItemId(_.ItemId)).Decrement()); }