internal override void ConfigureInternalSendReply(InternalSendMessage internalSendMessage, out ToReply responseFormatter) { responseFormatter = new ToReply(); foreach (KeyValuePair <string, InArgument> pair in this.Parameters) { responseFormatter.Parameters.Add(InArgument.CreateReference(pair.Value, pair.Key)); } }
internal override void ConfigureInternalSendReply(InternalSendMessage internalSendMessage, out ToReply responseFormatter) { responseFormatter = new ToReply(); foreach (KeyValuePair<string, InArgument> pair in this.Parameters) { responseFormatter.Parameters.Add(InArgument.CreateReference(pair.Value, pair.Key)); } }
internal override void ConfigureInternalSend(InternalSendMessage internalSendMessage, out ToRequest requestFormatter) { //Zero or more arguments requestFormatter = new ToRequest(); foreach (KeyValuePair <string, InArgument> parameter in this.Parameters) { requestFormatter.Parameters.Add(InArgument.CreateReference(parameter.Value, parameter.Key)); } }
InternalSendMessage CreateInternalSend() { InternalSendMessage result = new InternalSendMessage { OwnerDisplayName = this.DisplayName, OperationName = this.OperationName, CorrelatesWith = new InArgument <CorrelationHandle>(new ArgumentValue <CorrelationHandle> { ArgumentName = "CorrelatesWith" }), Endpoint = this.Endpoint, EndpointConfigurationName = this.EndpointConfigurationName, IsOneWay = this.isOneWay, IsSendReply = false, TokenImpersonationLevel = this.TokenImpersonationLevel, ServiceContractName = this.ServiceContractName, Action = this.Action, Parent = this }; if (this.correlationInitializers != null) { foreach (CorrelationInitializer correlation in this.correlationInitializers) { result.CorrelationInitializers.Add(correlation.Clone()); } Collection <CorrelationQuery> internalCorrelationQueryCollection = ContractInferenceHelper.CreateClientCorrelationQueries(null, this.correlationInitializers, this.Action, this.ServiceContractName, this.OperationName, false); Fx.Assert(internalCorrelationQueryCollection.Count <= 1, "Querycollection for send cannot have more than one correlation query"); if (internalCorrelationQueryCollection.Count == 1) { result.CorrelationQuery = internalCorrelationQueryCollection[0]; } } if (this.EndpointAddress != null) { result.EndpointAddress = new InArgument <Uri>(context => ((InArgument <Uri>) this.EndpointAddress).Get(context)); } if (this.lazyCorrelationQueries != null) { foreach (CorrelationQuery correlationQuery in this.lazyCorrelationQueries) { result.ReplyCorrelationQueries.Add(correlationQuery); } } return(result); }
protected override void CacheMetadata(ActivityMetadata metadata) { if (this.Request == null) { metadata.AddValidationError(System.ServiceModel.Activities.SR.SendReplyRequestCannotBeNull(base.DisplayName)); } MessagingActivityHelper.ValidateCorrelationInitializer(metadata, this.correlationInitializers, true, base.DisplayName, (this.Request != null) ? this.Request.OperationName : string.Empty); string operationName = (this.Request != null) ? this.Request.OperationName : null; this.InternalContent.CacheMetadata(metadata, this, operationName); if (this.correlationInitializers != null) { for (int i = 0; i < this.correlationInitializers.Count; i++) { CorrelationInitializer initializer = this.correlationInitializers[i]; initializer.ArgumentName = "Parameter" + i; RuntimeArgument argument = new RuntimeArgument(initializer.ArgumentName, Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(initializer.CorrelationHandle, argument); metadata.AddArgument(argument); } } if (!metadata.HasViolations) { this.internalSend = this.CreateInternalSend(); this.InternalContent.ConfigureInternalSendReply(this.internalSend, out this.responseFormatter); InArgument <CorrelationHandle> replyHandleFromReceive = this.GetReplyHandleFromReceive(); if (replyHandleFromReceive != null) { InArgument <CorrelationHandle> binding = MessagingActivityHelper.CreateReplyCorrelatesWith(replyHandleFromReceive); RuntimeArgument argument4 = new RuntimeArgument("InternalSendCorrelatesWith", Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(binding, argument4); metadata.AddArgument(argument4); this.internalSend.CorrelatesWith = (InArgument <CorrelationHandle>)InArgument.CreateReference(binding, "InternalSendCorrelatesWith"); if (this.responseFormatter != null) { InArgument <CorrelationHandle> argument5 = MessagingActivityHelper.CreateReplyCorrelatesWith(replyHandleFromReceive); RuntimeArgument argument6 = new RuntimeArgument("ResponseFormatterCorrelatesWith", Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(argument5, argument6); metadata.AddArgument(argument6); this.responseFormatter.CorrelatesWith = (InArgument <CorrelationHandle>)InArgument.CreateReference(argument5, "ResponseFormatterCorrelatesWith"); } } } else { this.internalSend = null; this.responseFormatter = null; } metadata.SetImportedChildrenCollection(new Collection <Activity>()); }
internal override void ConfigureInternalSend(InternalSendMessage internalSendMessage, out ToRequest requestFormatter) { if (this.InternalDeclaredMessageType == MessageDescription.TypeOfUntypedMessage) { internalSendMessage.Message = new InArgument <System.ServiceModel.Channels.Message>(context => ((InArgument <System.ServiceModel.Channels.Message>) this.Message).Get(context)); requestFormatter = null; } else { requestFormatter = new ToRequest(); if (this.Message != null) { requestFormatter.Parameters.Add(InArgument.CreateReference(this.Message, "Message")); } } }
private InternalSendMessage CreateInternalSend() { InternalSendMessage message = new InternalSendMessage { IsSendReply = true, ShouldPersistBeforeSend = this.PersistBeforeSend, OperationName = this.Request.OperationName }; if (this.correlationInitializers != null) { foreach (CorrelationInitializer initializer in this.correlationInitializers) { message.CorrelationInitializers.Add(initializer.Clone()); } } return(message); }
internal override void ConfigureInternalSend(InternalSendMessage internalSendMessage, out ToRequest requestFormatter) { if (this.InternalDeclaredMessageType == MessageDescription.TypeOfUntypedMessage) { // Value is a Message, do not use the formatter but directly pass it to InternalSendMessage internalSendMessage.Message = new InArgument <Message>(context => ((InArgument <Message>) this.Message).Get(context)); requestFormatter = null; } else { requestFormatter = new ToRequest(); if (this.Message != null) { requestFormatter.Parameters.Add(InArgument.CreateReference(this.Message, "Message")); } } }
private InternalSendMessage CreateInternalSend() { InternalSendMessage message2 = new InternalSendMessage { OperationName = this.OperationName }; ArgumentValue <CorrelationHandle> expression = new ArgumentValue <CorrelationHandle> { ArgumentName = "CorrelatesWith" }; message2.CorrelatesWith = new InArgument <CorrelationHandle>(expression); message2.Endpoint = this.Endpoint; message2.EndpointConfigurationName = this.EndpointConfigurationName; message2.IsOneWay = this.isOneWay; message2.IsSendReply = false; message2.TokenImpersonationLevel = this.TokenImpersonationLevel; message2.ServiceContractName = this.ServiceContractName; message2.Action = this.Action; message2.Parent = this; InternalSendMessage message = message2; if (this.correlationInitializers != null) { foreach (CorrelationInitializer initializer in this.correlationInitializers) { message.CorrelationInitializers.Add(initializer.Clone()); } Collection <CorrelationQuery> collection = ContractInferenceHelper.CreateClientCorrelationQueries(null, this.correlationInitializers, this.Action, this.ServiceContractName, this.OperationName, false); if (collection.Count == 1) { message.CorrelationQuery = collection[0]; } } if (this.EndpointAddress != null) { message.EndpointAddress = new InArgument <Uri>(context => this.EndpointAddress.Get(context)); } if (this.lazyCorrelationQueries != null) { foreach (CorrelationQuery query in this.lazyCorrelationQueries) { message.ReplyCorrelationQueries.Add(query); } } return(message); }
// responseFormatter is null if we have an untyped message situation InternalSendMessage CreateInternalSend() { InternalSendMessage result = new InternalSendMessage { IsSendReply = true, //indicates that we are sending a reply(server-side) ShouldPersistBeforeSend = this.PersistBeforeSend, OperationName = this.Request.OperationName, //need this for displaying error messages OwnerDisplayName = this.DisplayName }; if (this.correlationInitializers != null) { foreach (CorrelationInitializer correlation in this.correlationInitializers) { result.CorrelationInitializers.Add(correlation.Clone()); } } return(result); }
internal override void ConfigureInternalSendReply(InternalSendMessage internalSendMessage, out ToReply responseFormatter) { if (this.InternalDeclaredMessageType == MessageDescription.TypeOfUntypedMessage) { internalSendMessage.Message = new InArgument <System.ServiceModel.Channels.Message>(context => ((InArgument <System.ServiceModel.Channels.Message>) this.Message).Get(context)); responseFormatter = null; } else { responseFormatter = new ToReply(); if (MessageBuilder.IsMessageContract(this.InternalDeclaredMessageType)) { responseFormatter.Result = InArgument.CreateReference(this.Message, "Message"); } else if (this.Message != null) { responseFormatter.Parameters.Add(InArgument.CreateReference(this.Message, "Message")); } } }
internal override void ConfigureInternalSendReply(InternalSendMessage internalSendMessage, out ToReply responseFormatter) { if (this.InternalDeclaredMessageType == MessageDescription.TypeOfUntypedMessage) { internalSendMessage.Message = new InArgument <Message>(context => ((InArgument <Message>) this.Message).Get(context)); responseFormatter = null; } else { responseFormatter = new ToReply(); // WCF rule dictates that MessageContract must be bound to ReturnValue, not Parameters if (MessageBuilder.IsMessageContract(this.InternalDeclaredMessageType)) { responseFormatter.Result = InArgument.CreateReference(this.Message, "Message"); } else if (this.Message != null) { responseFormatter.Parameters.Add(InArgument.CreateReference(this.Message, "Message")); } } }
internal override void ConfigureInternalSendReply(InternalSendMessage internalSendMessage, out ToReply responseFormatter) { if (this.InternalDeclaredMessageType == MessageDescription.TypeOfUntypedMessage) { internalSendMessage.Message = new InArgument<Message>(context => ((InArgument<Message>)this.Message).Get(context)); responseFormatter = null; } else { responseFormatter = new ToReply(); // WCF rule dictates that MessageContract must be bound to ReturnValue, not Parameters if (MessageBuilder.IsMessageContract(this.InternalDeclaredMessageType)) { responseFormatter.Result = InArgument.CreateReference(this.Message, "Message"); } else if (this.Message != null) { responseFormatter.Parameters.Add(InArgument.CreateReference(this.Message, "Message")); } } }
internal override void ConfigureInternalSend(InternalSendMessage internalSendMessage, out ToRequest requestFormatter) { if (this.InternalDeclaredMessageType == MessageDescription.TypeOfUntypedMessage) { // Value is a Message, do not use the formatter but directly pass it to InternalSendMessage internalSendMessage.Message = new InArgument<Message>(context => ((InArgument<Message>)this.Message).Get(context)); requestFormatter = null; } else { requestFormatter = new ToRequest(); if (this.Message != null) { requestFormatter.Parameters.Add(InArgument.CreateReference(this.Message, "Message")); } } }
// responseFormatter is null if we have an untyped message situation InternalSendMessage CreateInternalSend() { InternalSendMessage result = new InternalSendMessage { IsSendReply = true, //indicates that we are sending a reply(server-side) ShouldPersistBeforeSend = this.PersistBeforeSend, OperationName = this.Request.OperationName, //need this for displaying error messages OwnerDisplayName = this.DisplayName }; if (this.correlationInitializers != null) { foreach (CorrelationInitializer correlation in this.correlationInitializers) { result.CorrelationInitializers.Add(correlation.Clone()); } } return result; }
protected override void CacheMetadata(ActivityMetadata metadata) { if (this.Request == null) { metadata.AddValidationError(SR.SendReplyRequestCannotBeNull(this.DisplayName)); } // validate Correlation Initializers MessagingActivityHelper.ValidateCorrelationInitializer(metadata, this.correlationInitializers, true, this.DisplayName, (this.Request != null ? this.Request.OperationName : String.Empty)); // Validate Content string operationName = this.Request != null ? this.Request.OperationName : null; this.InternalContent.CacheMetadata(metadata, this, operationName); if (this.correlationInitializers != null) { for (int i = 0; i < this.correlationInitializers.Count; i++) { CorrelationInitializer initializer = this.correlationInitializers[i]; initializer.ArgumentName = Constants.Parameter + i; RuntimeArgument initializerArgument = new RuntimeArgument(initializer.ArgumentName, Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(initializer.CorrelationHandle, initializerArgument); metadata.AddArgument(initializerArgument); } } if (!metadata.HasViolations) { this.internalSend = CreateInternalSend(); this.InternalContent.ConfigureInternalSendReply(this.internalSend, out this.responseFormatter); InArgument<CorrelationHandle> requestReplyHandleFromReceive = GetReplyHandleFromReceive(); if (requestReplyHandleFromReceive != null) { InArgument<CorrelationHandle> internalSendCorrelatesWith = MessagingActivityHelper.CreateReplyCorrelatesWith(requestReplyHandleFromReceive); RuntimeArgument internalSendCorrelatesWithArgument = new RuntimeArgument("InternalSendCorrelatesWith", Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(internalSendCorrelatesWith, internalSendCorrelatesWithArgument); metadata.AddArgument(internalSendCorrelatesWithArgument); this.internalSend.CorrelatesWith = (InArgument<CorrelationHandle>)InArgument.CreateReference(internalSendCorrelatesWith, "InternalSendCorrelatesWith"); if (this.responseFormatter != null) { InArgument<CorrelationHandle> responseFormatterCorrelatesWith = MessagingActivityHelper.CreateReplyCorrelatesWith(requestReplyHandleFromReceive); RuntimeArgument responseFormatterCorrelatesWithArgument = new RuntimeArgument("ResponseFormatterCorrelatesWith", Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(responseFormatterCorrelatesWith, responseFormatterCorrelatesWithArgument); metadata.AddArgument(responseFormatterCorrelatesWithArgument); responseFormatter.CorrelatesWith = (InArgument<CorrelationHandle>)InArgument.CreateReference(responseFormatterCorrelatesWith, "ResponseFormatterCorrelatesWith"); } } } else { this.internalSend = null; this.responseFormatter = null; } // We don't have any imported children despite referencing the Request metadata.SetImportedChildrenCollection(new Collection<Activity>()); }
InternalSendMessage CreateInternalSend() { InternalSendMessage result = new InternalSendMessage { OwnerDisplayName = this.DisplayName, OperationName = this.OperationName, CorrelatesWith = new InArgument<CorrelationHandle>(new ArgumentValue<CorrelationHandle> { ArgumentName = "CorrelatesWith" }), Endpoint = this.Endpoint, EndpointConfigurationName = this.EndpointConfigurationName, IsOneWay = this.isOneWay, IsSendReply = false, TokenImpersonationLevel = this.TokenImpersonationLevel, ServiceContractName = this.ServiceContractName, Action = this.Action, Parent = this }; if (this.correlationInitializers != null) { foreach (CorrelationInitializer correlation in this.correlationInitializers) { result.CorrelationInitializers.Add(correlation.Clone()); } Collection<CorrelationQuery> internalCorrelationQueryCollection = ContractInferenceHelper.CreateClientCorrelationQueries(null, this.correlationInitializers, this.Action, this.ServiceContractName, this.OperationName, false); Fx.Assert(internalCorrelationQueryCollection.Count <= 1, "Querycollection for send cannot have more than one correlation query"); if (internalCorrelationQueryCollection.Count == 1) { result.CorrelationQuery = internalCorrelationQueryCollection[0]; } } if (this.EndpointAddress != null) { result.EndpointAddress = new InArgument<Uri>(context => ((InArgument<Uri>)this.EndpointAddress).Get(context)); } if (this.lazyCorrelationQueries != null) { foreach (CorrelationQuery correlationQuery in this.lazyCorrelationQueries) { result.ReplyCorrelationQueries.Add(correlationQuery); } } return result; }
protected override void CacheMetadata(ActivityMetadata metadata) { if (string.IsNullOrEmpty(this.OperationName)) { metadata.AddValidationError(SR.MissingOperationName(this.DisplayName)); } if (this.ServiceContractName == null) { string errorOperationName = ContractValidationHelper.GetErrorMessageOperationName(this.OperationName); metadata.AddValidationError(SR.MissingServiceContractName(this.DisplayName, errorOperationName)); } if (this.Endpoint == null) { if (string.IsNullOrEmpty(this.EndpointConfigurationName)) { metadata.AddValidationError(SR.EndpointNotSet(this.DisplayName, this.OperationName)); } } else { if (!string.IsNullOrEmpty(this.EndpointConfigurationName)) { metadata.AddValidationError(SR.EndpointIncorrectlySet(this.DisplayName, this.OperationName)); } if (this.Endpoint.Binding == null) { metadata.AddValidationError(SR.MissingBindingInEndpoint(this.Endpoint.Name, this.ServiceContractName)); } } // validate Correlation Initializers MessagingActivityHelper.ValidateCorrelationInitializer(metadata, this.correlationInitializers, false, this.DisplayName, this.OperationName); // Add runtime arguments MessagingActivityHelper.AddRuntimeArgument(this.CorrelatesWith, "CorrelatesWith", Constants.CorrelationHandleType, ArgumentDirection.In, metadata); MessagingActivityHelper.AddRuntimeArgument(this.EndpointAddress, "EndpointAddress", Constants.UriType, ArgumentDirection.In, metadata); // Validate Content this.InternalContent.CacheMetadata(metadata, this, this.OperationName); if (this.correlationInitializers != null) { for (int i = 0; i < this.correlationInitializers.Count; i++) { CorrelationInitializer initializer = this.correlationInitializers[i]; initializer.ArgumentName = Constants.Parameter + i; RuntimeArgument initializerArgument = new RuntimeArgument(initializer.ArgumentName, Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(initializer.CorrelationHandle, initializerArgument); metadata.AddArgument(initializerArgument); } } if (!metadata.HasViolations) { if (this.InternalContent is SendMessageContent && MessageBuilder.IsMessageContract(((SendMessageContent)this.InternalContent).InternalDeclaredMessageType)) { this.OperationUsesMessageContract = true; } this.internalSend = CreateInternalSend(); this.InternalContent.ConfigureInternalSend(this.internalSend, out this.requestFormatter); if (this.requestFormatter != null && this.lazyFormatter != null) { this.requestFormatter.Formatter = this.lazyFormatter; } } else { this.internalSend = null; this.requestFormatter = null; } }
private InternalSendMessage CreateInternalSend() { InternalSendMessage message2 = new InternalSendMessage { OperationName = this.OperationName }; ArgumentValue<CorrelationHandle> expression = new ArgumentValue<CorrelationHandle> { ArgumentName = "CorrelatesWith" }; message2.CorrelatesWith = new InArgument<CorrelationHandle>(expression); message2.Endpoint = this.Endpoint; message2.EndpointConfigurationName = this.EndpointConfigurationName; message2.IsOneWay = this.isOneWay; message2.IsSendReply = false; message2.TokenImpersonationLevel = this.TokenImpersonationLevel; message2.ServiceContractName = this.ServiceContractName; message2.Action = this.Action; message2.Parent = this; InternalSendMessage message = message2; if (this.correlationInitializers != null) { foreach (CorrelationInitializer initializer in this.correlationInitializers) { message.CorrelationInitializers.Add(initializer.Clone()); } Collection<CorrelationQuery> collection = ContractInferenceHelper.CreateClientCorrelationQueries(null, this.correlationInitializers, this.Action, this.ServiceContractName, this.OperationName, false); if (collection.Count == 1) { message.CorrelationQuery = collection[0]; } } if (this.EndpointAddress != null) { message.EndpointAddress = new InArgument<Uri>(context => this.EndpointAddress.Get(context)); } if (this.lazyCorrelationQueries != null) { foreach (CorrelationQuery query in this.lazyCorrelationQueries) { message.ReplyCorrelationQueries.Add(query); } } return message; }
internal override void ConfigureInternalSend(InternalSendMessage internalSendMessage, out ToRequest requestFormatter) { //Zero or more arguments requestFormatter = new ToRequest(); foreach (KeyValuePair<string, InArgument> parameter in this.Parameters) { requestFormatter.Parameters.Add(InArgument.CreateReference(parameter.Value, parameter.Key)); } }
internal abstract void ConfigureInternalSend(InternalSendMessage internalSendMessage, out ToRequest requestFormatter);
internal abstract void ConfigureInternalSend(InternalSendMessage internalSendMessage, out ToRequest requestFormatter);
internal abstract void ConfigureInternalSendReply(InternalSendMessage internalSendMessage, out ToReply responseFormatter);
internal abstract void ConfigureInternalSendReply(InternalSendMessage internalSendMessage, out ToReply responseFormatter);
protected override void CacheMetadata(ActivityMetadata metadata) { if (string.IsNullOrEmpty(this.OperationName)) { metadata.AddValidationError(System.ServiceModel.Activities.SR.MissingOperationName(base.DisplayName)); } if (this.ServiceContractName == null) { string errorMessageOperationName = ContractValidationHelper.GetErrorMessageOperationName(this.OperationName); metadata.AddValidationError(System.ServiceModel.Activities.SR.MissingServiceContractName(base.DisplayName, errorMessageOperationName)); } if (this.Endpoint == null) { if (string.IsNullOrEmpty(this.EndpointConfigurationName)) { metadata.AddValidationError(System.ServiceModel.Activities.SR.EndpointNotSet(base.DisplayName, this.OperationName)); } } else { if (!string.IsNullOrEmpty(this.EndpointConfigurationName)) { metadata.AddValidationError(System.ServiceModel.Activities.SR.EndpointIncorrectlySet(base.DisplayName, this.OperationName)); } if (this.Endpoint.Binding == null) { metadata.AddValidationError(System.ServiceModel.Activities.SR.MissingBindingInEndpoint(this.Endpoint.Name, this.ServiceContractName)); } } MessagingActivityHelper.ValidateCorrelationInitializer(metadata, this.correlationInitializers, false, base.DisplayName, this.OperationName); MessagingActivityHelper.AddRuntimeArgument(this.CorrelatesWith, "CorrelatesWith", System.ServiceModel.Activities.Constants.CorrelationHandleType, ArgumentDirection.In, metadata); MessagingActivityHelper.AddRuntimeArgument(this.EndpointAddress, "EndpointAddress", System.ServiceModel.Activities.Constants.UriType, ArgumentDirection.In, metadata); this.InternalContent.CacheMetadata(metadata, this, this.OperationName); if (this.correlationInitializers != null) { for (int i = 0; i < this.correlationInitializers.Count; i++) { CorrelationInitializer initializer = this.correlationInitializers[i]; initializer.ArgumentName = "Parameter" + i; RuntimeArgument argument = new RuntimeArgument(initializer.ArgumentName, System.ServiceModel.Activities.Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(initializer.CorrelationHandle, argument); metadata.AddArgument(argument); } } if (!metadata.HasViolations) { if ((this.InternalContent is SendMessageContent) && MessageBuilder.IsMessageContract(((SendMessageContent)this.InternalContent).InternalDeclaredMessageType)) { this.OperationUsesMessageContract = true; } this.internalSend = this.CreateInternalSend(); this.InternalContent.ConfigureInternalSend(this.internalSend, out this.requestFormatter); if ((this.requestFormatter != null) && (this.lazyFormatter != null)) { this.requestFormatter.Formatter = this.lazyFormatter; } } else { this.internalSend = null; this.requestFormatter = null; } }
protected override void CacheMetadata(ActivityMetadata metadata) { if (this.Request == null) { metadata.AddValidationError(SR.SendReplyRequestCannotBeNull(this.DisplayName)); } // validate Correlation Initializers MessagingActivityHelper.ValidateCorrelationInitializer(metadata, this.correlationInitializers, true, this.DisplayName, (this.Request != null ? this.Request.OperationName : String.Empty)); // Validate Content string operationName = this.Request != null ? this.Request.OperationName : null; this.InternalContent.CacheMetadata(metadata, this, operationName); if (this.correlationInitializers != null) { for (int i = 0; i < this.correlationInitializers.Count; i++) { CorrelationInitializer initializer = this.correlationInitializers[i]; initializer.ArgumentName = Constants.Parameter + i; RuntimeArgument initializerArgument = new RuntimeArgument(initializer.ArgumentName, Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(initializer.CorrelationHandle, initializerArgument); metadata.AddArgument(initializerArgument); } } if (!metadata.HasViolations) { this.internalSend = CreateInternalSend(); this.InternalContent.ConfigureInternalSendReply(this.internalSend, out this.responseFormatter); InArgument <CorrelationHandle> requestReplyHandleFromReceive = GetReplyHandleFromReceive(); if (requestReplyHandleFromReceive != null) { InArgument <CorrelationHandle> internalSendCorrelatesWith = MessagingActivityHelper.CreateReplyCorrelatesWith(requestReplyHandleFromReceive); RuntimeArgument internalSendCorrelatesWithArgument = new RuntimeArgument("InternalSendCorrelatesWith", Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(internalSendCorrelatesWith, internalSendCorrelatesWithArgument); metadata.AddArgument(internalSendCorrelatesWithArgument); this.internalSend.CorrelatesWith = (InArgument <CorrelationHandle>)InArgument.CreateReference(internalSendCorrelatesWith, "InternalSendCorrelatesWith"); if (this.responseFormatter != null) { InArgument <CorrelationHandle> responseFormatterCorrelatesWith = MessagingActivityHelper.CreateReplyCorrelatesWith(requestReplyHandleFromReceive); RuntimeArgument responseFormatterCorrelatesWithArgument = new RuntimeArgument("ResponseFormatterCorrelatesWith", Constants.CorrelationHandleType, ArgumentDirection.In); metadata.Bind(responseFormatterCorrelatesWith, responseFormatterCorrelatesWithArgument); metadata.AddArgument(responseFormatterCorrelatesWithArgument); responseFormatter.CorrelatesWith = (InArgument <CorrelationHandle>)InArgument.CreateReference(responseFormatterCorrelatesWith, "ResponseFormatterCorrelatesWith"); } } } else { this.internalSend = null; this.responseFormatter = null; } // We don't have any imported children despite referencing the Request metadata.SetImportedChildrenCollection(new Collection <Activity>()); }