IServiceOriented.ServiceBus.PublishRequest.Copy C# (CSharp) Method

Copy() public static method

public static Copy ( PublishRequest original ) : PublishRequest
original PublishRequest
return PublishRequest
        public static PublishRequest Copy(PublishRequest original, params KeyValuePair<MessageDeliveryContextKey, object>[] additionalContext)
        {
            Dictionary<MessageDeliveryContextKey, object> editableContext = original.Context.ToDictionary();
            foreach (var c in additionalContext)
            {
                editableContext.Add(c.Key, c.Value);
            }
            return new PublishRequest(original.ContractType, original.Action, original.Message, new MessageDeliveryContext(editableContext));
        }

Usage Example

        void deliverToSubscriptionEndpoint(TimeSpan timeout, PublishRequest publishRequest)
        {
            SubscriptionEndpoint se = _subscriptionEndpoint;

            publishRequest = PublishRequest.Copy(publishRequest, new KeyValuePair <MessageDeliveryContextKey, object>(MessageDelivery.PublishRequestId, publishRequest.PublishRequestId));

            using (TransactionScope ts = new TransactionScope())
            {
                MessageDelivery md           = new MessageDelivery(Guid.NewGuid().ToString(), se.Id, publishRequest.ContractType, publishRequest.Action, publishRequest.Message, MaxRetries, 0, null, publishRequest.Context, DateTime.Now + timeout);
                DeliveryCore    deliveryCore = ServiceLocator.GetInstance <DeliveryCore>();
                deliveryCore.Deliver(md);
                ts.Complete();
            }
        }