public void cloning_an_envelope() { var envelope = new Envelope(); envelope.Message = new Message1(); envelope.Headers["a"] = "1"; envelope.Headers["b"] = "2"; var clone = envelope.Clone(); clone.ShouldNotBeTheSameAs(envelope); clone.Message.ShouldBeTheSameAs(envelope.Message); clone.Headers.ShouldNotBeTheSameAs(envelope.Headers); clone.Headers["a"].ShouldEqual("1"); clone.Headers["b"].ShouldEqual("2"); }
// virtual for testing of course public virtual IHeaders Send(Envelope envelope, IEnvelopeSerializer serializer, Uri replyUri = null) { var clone = envelope.Clone(); // Must be done in this order! Modifiers.Each(x => x.Modify(clone)); serializer.Serialize(clone, this); clone.Headers[Envelope.DestinationKey] = Uri.ToString(); clone.Headers[Envelope.ChannelKey] = Key; if (replyUri != null) { clone.Headers[Envelope.ReplyUriKey] = replyUri.ToString(); } Channel.Send(clone.Data, clone.Headers); return clone.Headers; }