/// <summary> /// Assigns cargo to a provided route. /// </summary> /// <param name="itinerary">New itinerary</param> public virtual void AssignToRoute(Itinerary itinerary) { if (itinerary == null) { throw new ArgumentNullException("itinerary"); } Delivery delivery = Delivery.DerivedFrom(_routeSpecification, itinerary, _lastHandlingEvent); CargoWasAssignedToRouteEvent @event = new CargoWasAssignedToRouteEvent(this, _itinerary, itinerary, delivery); _itinerary = itinerary; DomainEvents.Raise(@event); }