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
- TranslateTransform3D.cs
- log.cs
- CommandPlan.cs
- EmptyStringExpandableObjectConverter.cs
- ExpandSegment.cs
- OleDbMetaDataFactory.cs
- DocumentXPathNavigator.cs
- Binding.cs
- ObjectParameter.cs
- VisualStyleTypesAndProperties.cs
- HttpCacheVaryByContentEncodings.cs
- glyphs.cs
- NavigationExpr.cs
- SharedStatics.cs
- Mapping.cs
- RoutedCommand.cs
- MetadataPropertyAttribute.cs
- PathStreamGeometryContext.cs
- AttributeProviderAttribute.cs
- SymbolPair.cs
- PageParserFilter.cs
- ReadOnlyObservableCollection.cs
- MessageDroppedTraceRecord.cs
- Math.cs
- SchemaConstraints.cs
- AlignmentXValidation.cs
- ResourceAssociationType.cs
- Material.cs
- RepeaterItemEventArgs.cs
- CmsInterop.cs
- AutoResizedEvent.cs
- DataExpression.cs
- SQLString.cs
- RegistryHandle.cs
- RowsCopiedEventArgs.cs
- NameValuePair.cs
- EntitySqlQueryCacheEntry.cs
- FilteredXmlReader.cs
- WindowsHyperlink.cs
- ProxyOperationRuntime.cs
- PtsPage.cs
- ReadOnlyCollection.cs
- CqlParserHelpers.cs
- ReachDocumentReferenceSerializerAsync.cs
- clipboard.cs
- DbMetaDataFactory.cs
- DefaultObjectMappingItemCollection.cs
- HtmlSelectionListAdapter.cs
- SafeCertificateContext.cs
- WebPartExportVerb.cs
- ParentUndoUnit.cs
- SecurityElement.cs
- ContentElement.cs
- BrowserTree.cs
- MimeMultiPart.cs
- EventProxy.cs
- PropagationProtocolsTracing.cs
- EntityException.cs
- ResourceManager.cs
- sqlnorm.cs
- BitSet.cs
- StackOverflowException.cs
- PersonalizationProvider.cs
- CriticalExceptions.cs
- EmptyStringExpandableObjectConverter.cs
- HashStream.cs
- RectAnimationClockResource.cs
- DataGridViewTextBoxColumn.cs
- ProtocolsConfiguration.cs
- MergablePropertyAttribute.cs
- FactoryMaker.cs
- BitSet.cs
- HtmlHead.cs
- CommandConverter.cs
- EnumMember.cs
- ModelPerspective.cs
- FrameworkReadOnlyPropertyMetadata.cs
- WindowProviderWrapper.cs
- SqlUserDefinedTypeAttribute.cs
- PrintDialogDesigner.cs
- PreviewKeyDownEventArgs.cs
- RepeaterItemCollection.cs
- EdmMember.cs
- EditorPartCollection.cs
- Tracking.cs
- dbenumerator.cs
- ViewValidator.cs
- ScrollEvent.cs
- RuntimeConfig.cs
- SecurityPermission.cs
- DocumentSequenceHighlightLayer.cs
- XPathNodeList.cs
- DataTableTypeConverter.cs
- AddressUtility.cs
- RoutedCommand.cs
- Attributes.cs
- CustomError.cs
- ResourcePool.cs
- FontFamily.cs
- MenuScrollingVisibilityConverter.cs