Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Activities / System / ServiceModel / Activities / ToRequest.cs / 1407647 / ToRequest.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.ServiceModel.Activities { using System.Activities; using System.Collections.ObjectModel; using System.Runtime; using System.ServiceModel.Channels; using System.ServiceModel.Description; using System.ServiceModel.Dispatcher; class ToRequest : CodeActivity { MessageVersion messageVersion; Collectionparameters; public ToRequest() { } public Send Send { get; set; } public IClientMessageFormatter Formatter { get; set; } public Collection Parameters { get { if (this.parameters == null) { this.parameters = new Collection (); } return this.parameters; } } public OutArgument Message { get; set; } internal MessageVersion MessageVersion { get { if (this.messageVersion == null) { this.messageVersion = this.Send.GetMessageVersion(); } return this.messageVersion; } } protected override void CacheMetadata(CodeActivityMetadata metadata) { if (this.parameters != null) { int count = 0; foreach (InArgument parameter in this.parameters) { RuntimeArgument parameterArgument = new RuntimeArgument(Constants.Parameter + count++, parameter.ArgumentType, ArgumentDirection.In); metadata.Bind(parameter, parameterArgument); metadata.AddArgument(parameterArgument); } } RuntimeArgument messageArgument = new RuntimeArgument(Constants.Message, Constants.MessageType, ArgumentDirection.Out, true); metadata.Bind(this.Message, messageArgument); metadata.AddArgument(messageArgument); Fx.Assert(this.Send != null, "Send cannot be null"); } protected override void Execute(CodeActivityContext context) { object[] inObjects; if (this.parameters == null || this.parameters.Count == 0) { inObjects = Constants.EmptyArray; } else { inObjects = new object[this.parameters.Count]; for (int i = 0; i < this.parameters.Count; i++) { Fx.Assert(this.parameters[i] != null, "Parameter should not be null"); inObjects[i] = this.parameters[i].Get(context); } } // Formatter is cached since it is fixed for each definition of Send if (this.Formatter == null) { OperationDescription operation = ContractInferenceHelper.CreateOneWayOperationDescription(this.Send); this.Formatter = ClientOperationFormatterProvider.GetFormatterFromRuntime(operation); this.Send.OperationDescription = operation; } // Send.ChannelCacheEnabled must be set before we call this.MessageVersion // because this.MessageVersion will cache description and description resolution depends on the value of ChannelCacheEnabled this.Send.InitializeChannelCacheEnabledSetting(context); // MessageVersion is cached for perf reasons since it is fixed for each definition of Send Message outMessage = this.Formatter.SerializeRequest(this.MessageVersion, inObjects); this.Message.Set(context, outMessage); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TemplatingOptionsDialog.cs
- OleDbConnectionInternal.cs
- DataGridViewControlCollection.cs
- Span.cs
- GeneralTransform3DCollection.cs
- EventPrivateKey.cs
- ThousandthOfEmRealDoubles.cs
- SizeChangedEventArgs.cs
- ConvertBinder.cs
- MissingFieldException.cs
- AttributeEmitter.cs
- DigestTraceRecordHelper.cs
- ZoneIdentityPermission.cs
- UserPersonalizationStateInfo.cs
- SoundPlayerAction.cs
- InternalSendMessage.cs
- tooltip.cs
- BitmapEffectOutputConnector.cs
- DefaultPropertyAttribute.cs
- TextPatternIdentifiers.cs
- XamlRtfConverter.cs
- CollectionBuilder.cs
- DescendantOverDescendantQuery.cs
- SemanticResultKey.cs
- dsa.cs
- FaultContractAttribute.cs
- ParallelQuery.cs
- ImageDrawing.cs
- SizeF.cs
- FlowLayout.cs
- ItemMap.cs
- GlobalizationAssembly.cs
- QuaternionIndependentAnimationStorage.cs
- ReflectionPermission.cs
- RoutedPropertyChangedEventArgs.cs
- XmlSchemaSimpleContentRestriction.cs
- WebPartMenu.cs
- Walker.cs
- CodeAttributeArgumentCollection.cs
- LinkUtilities.cs
- AutoResetEvent.cs
- ClientEventManager.cs
- FlowDocumentFormatter.cs
- StateRuntime.cs
- MaskPropertyEditor.cs
- DesignerDataRelationship.cs
- Rect.cs
- ChangeProcessor.cs
- FontNamesConverter.cs
- MethodExpr.cs
- JsonReader.cs
- ApplicationManager.cs
- IApplicationTrustManager.cs
- ExpressionHelper.cs
- CssStyleCollection.cs
- ManagedFilter.cs
- SqlClientFactory.cs
- UserUseLicenseDictionaryLoader.cs
- DataServiceQueryException.cs
- EmbeddedMailObject.cs
- CommandField.cs
- ServerType.cs
- XmlQueryType.cs
- ConfigurationElement.cs
- DecimalConstantAttribute.cs
- ZipIOLocalFileHeader.cs
- HostingEnvironment.cs
- JsonCollectionDataContract.cs
- TrackingMemoryStreamFactory.cs
- NTAccount.cs
- Registry.cs
- ExpressionCopier.cs
- BindingObserver.cs
- SqlDataReader.cs
- SHA256Managed.cs
- MenuItem.cs
- Array.cs
- InheritanceAttribute.cs
- WorkflowInstanceExtensionCollection.cs
- HttpServerVarsCollection.cs
- HwndHost.cs
- SelectionHighlightInfo.cs
- ControlDesigner.cs
- XmlSchemaException.cs
- ObjectRef.cs
- IndentedWriter.cs
- DoubleCollectionValueSerializer.cs
- UInt16Storage.cs
- VisualTreeUtils.cs
- MessageHeader.cs
- OleDbInfoMessageEvent.cs
- XmlDataCollection.cs
- ZipIOCentralDirectoryFileHeader.cs
- ObjectParameter.cs
- GroupStyle.cs
- columnmapfactory.cs
- XamlToRtfWriter.cs
- DragSelectionMessageFilter.cs
- SqlConnectionManager.cs
- ByteStorage.cs