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
- DynamicUpdateCommand.cs
- OutOfMemoryException.cs
- WebConfigurationFileMap.cs
- MiniParameterInfo.cs
- IdentityReference.cs
- Path.cs
- GACMembershipCondition.cs
- GridViewDeleteEventArgs.cs
- NullableDecimalMinMaxAggregationOperator.cs
- ISAPIWorkerRequest.cs
- ValueConversionAttribute.cs
- IsolatedStorageException.cs
- IItemProperties.cs
- IntSecurity.cs
- FileUtil.cs
- HandleExceptionArgs.cs
- DuplicateDetector.cs
- BaseParaClient.cs
- X509Logo.cs
- ArrayList.cs
- RoleBoolean.cs
- ApplicationTrust.cs
- EntityCommand.cs
- NameService.cs
- fixedPageContentExtractor.cs
- GridEntry.cs
- ValidateNames.cs
- ToolboxControl.cs
- SecurityContext.cs
- LoginName.cs
- baseshape.cs
- FilteredDataSetHelper.cs
- HandlerBase.cs
- DoubleCollectionConverter.cs
- XmlSchemaException.cs
- ToolCreatedEventArgs.cs
- SwitchExpression.cs
- CodeValidator.cs
- SizeChangedInfo.cs
- ExecutorLocksHeldException.cs
- InstanceLockLostException.cs
- SafeHandles.cs
- Empty.cs
- XPathParser.cs
- PrintDialog.cs
- LogicalTreeHelper.cs
- DataTablePropertyDescriptor.cs
- FormParameter.cs
- TypedDataSetSchemaImporterExtensionFx35.cs
- DrawListViewColumnHeaderEventArgs.cs
- PersonalizablePropertyEntry.cs
- UpdateCompiler.cs
- DataSourceHelper.cs
- ClientSponsor.cs
- WebPartVerb.cs
- DuplexSecurityProtocolFactory.cs
- ItemAutomationPeer.cs
- SiblingIterators.cs
- PaperSize.cs
- LabelEditEvent.cs
- BindingSource.cs
- NonceToken.cs
- NativeMethods.cs
- EntityDataSourceSelectedEventArgs.cs
- XamlHostingSectionGroup.cs
- EllipseGeometry.cs
- GPStream.cs
- DbInsertCommandTree.cs
- SoapEnumAttribute.cs
- PagerSettings.cs
- CmsInterop.cs
- coordinatorfactory.cs
- Line.cs
- StringStorage.cs
- StreamUpgradeBindingElement.cs
- _ListenerAsyncResult.cs
- SelfIssuedAuthProofToken.cs
- ObjectListDesigner.cs
- RuntimeConfigLKG.cs
- PerformanceCounterManager.cs
- ServiceMoniker.cs
- ApplicationManager.cs
- RefreshPropertiesAttribute.cs
- _KerberosClient.cs
- BmpBitmapEncoder.cs
- UnsignedPublishLicense.cs
- ManagementClass.cs
- ExpandButtonVisibilityConverter.cs
- propertytag.cs
- HtmlTextBoxAdapter.cs
- LineBreak.cs
- CurrentChangingEventArgs.cs
- DescendentsWalkerBase.cs
- FormatException.cs
- TreeNodeConverter.cs
- WbemException.cs
- SqlBuffer.cs
- WebControlsSection.cs
- SafeFileMappingHandle.cs
- securitycriticaldata.cs