Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Activities / System / ServiceModel / Activities / FromRequest.cs / 1305376 / FromRequest.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.ServiceModel.Activities { using System.Activities; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime; using System.ServiceModel.Channels; using System.ServiceModel.Dispatcher; using SR2 = System.ServiceModel.Activities.SR; class FromRequest : NativeActivity { Collectionparameters; public InOutArgument Message { get; set; } public IDispatchMessageFormatter Formatter { get; set; } public Collection Parameters { get { if (this.parameters == null) { this.parameters = new Collection (); } return this.parameters; } } public InArgument NoPersistHandle { get; set; } internal bool CloseMessage { get; set; } protected override void CacheMetadata(NativeActivityMetadata metadata) { RuntimeArgument messageArgument = new RuntimeArgument(Constants.Message, Constants.MessageType, ArgumentDirection.InOut, true); metadata.Bind(this.Message, messageArgument); metadata.AddArgument(messageArgument); if (this.parameters != null) { int count = 0; foreach (OutArgument parameter in this.parameters) { RuntimeArgument parameterArgument = new RuntimeArgument(Constants.Parameter + count++, parameter.ArgumentType, ArgumentDirection.Out); metadata.Bind(parameter, parameterArgument); metadata.AddArgument(parameterArgument); } } RuntimeArgument noPersistHandleArgument = new RuntimeArgument(Constants.NoPersistHandle, Constants.NoPersistHandleType, ArgumentDirection.In); metadata.Bind(this.NoPersistHandle, noPersistHandleArgument); metadata.AddArgument(noPersistHandleArgument); } protected override void Execute(NativeActivityContext context) { Message inMessage = null; try { inMessage = this.Message.Get(context); object[] outObjects; if (this.parameters == null || this.parameters.Count == 0) { outObjects = Constants.EmptyArray; } else { outObjects = new object[this.parameters.Count]; } this.Formatter.DeserializeRequest(inMessage, outObjects); if (this.parameters != null) { for (int i = 0; i < this.parameters.Count; i++) { OutArgument outArgument = this.parameters[i]; Fx.Assert(outArgument != null, "Parameter cannot be null"); object obj = outObjects[i]; if (obj == null) { obj = ProxyOperationRuntime.GetDefaultParameterValue(outArgument.ArgumentType); } outArgument.Set(context, obj); } } } finally { if (this.CloseMessage && inMessage != null) { inMessage.Close(); } this.Message.Set(context, null); NoPersistHandle handle = (this.NoPersistHandle == null) ? null : this.NoPersistHandle.Get(context); if (handle != null) { handle.Exit(context); } } } } } // 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
- TextTreeObjectNode.cs
- Visitor.cs
- TemplatedWizardStep.cs
- CompositeCollectionView.cs
- FlowchartSizeFeature.cs
- UIServiceHelper.cs
- SqlMetaData.cs
- JoinSymbol.cs
- XamlInt32CollectionSerializer.cs
- ListDictionary.cs
- TrustManager.cs
- InputBuffer.cs
- MonthCalendar.cs
- HwndProxyElementProvider.cs
- Comparer.cs
- LOSFormatter.cs
- MessageBox.cs
- WebPartConnectionsCloseVerb.cs
- KerberosReceiverSecurityToken.cs
- basecomparevalidator.cs
- StaticResourceExtension.cs
- SystemFonts.cs
- DataSourceXmlSubItemAttribute.cs
- CardSpaceSelector.cs
- MobilePage.cs
- QueryStringHandler.cs
- WebCategoryAttribute.cs
- FormsAuthentication.cs
- InteropBitmapSource.cs
- ContextMenu.cs
- WMIInterop.cs
- RightsController.cs
- MailBnfHelper.cs
- PrintPreviewGraphics.cs
- GridItemCollection.cs
- HandoffBehavior.cs
- RemoteTokenFactory.cs
- ListViewItem.cs
- WebPartPersonalization.cs
- NameValuePermission.cs
- DesignerTransaction.cs
- AuthenticationModulesSection.cs
- InkPresenterAutomationPeer.cs
- LightweightCodeGenerator.cs
- control.ime.cs
- UITypeEditor.cs
- TextWriterEngine.cs
- KeyedPriorityQueue.cs
- ToolboxItemAttribute.cs
- OperationResponse.cs
- PartialTrustVisibleAssembliesSection.cs
- PanelStyle.cs
- Quad.cs
- UIAgentMonitorHandle.cs
- ModelVisual3D.cs
- XmlSchemaCompilationSettings.cs
- ModelService.cs
- DataSet.cs
- QueryPageSettingsEventArgs.cs
- PackageRelationshipSelector.cs
- SystemFonts.cs
- ProcessRequestArgs.cs
- QueryResult.cs
- Int32Converter.cs
- StrongNameUtility.cs
- Double.cs
- XmlSchemaObject.cs
- MissingFieldException.cs
- ResolvedKeyFrameEntry.cs
- DataServiceHostWrapper.cs
- CapabilitiesAssignment.cs
- JsonQNameDataContract.cs
- SafeBitVector32.cs
- ControlCollection.cs
- NativeMethods.cs
- InstanceLockException.cs
- Win32Native.cs
- DecimalFormatter.cs
- BooleanConverter.cs
- _UriTypeConverter.cs
- SHA384Managed.cs
- TreeIterators.cs
- HostedTransportConfigurationBase.cs
- Renderer.cs
- WebBrowserUriTypeConverter.cs
- WindowHideOrCloseTracker.cs
- ModelItemKeyValuePair.cs
- RTLAwareMessageBox.cs
- WCFBuildProvider.cs
- ReadOnlyDataSourceView.cs
- ReflectPropertyDescriptor.cs
- FormatterServicesNoSerializableCheck.cs
- BitmapEffectDrawingContextState.cs
- SchemaImporterExtensionElementCollection.cs
- XmlException.cs
- FrameSecurityDescriptor.cs
- TextRangeAdaptor.cs
- _AcceptOverlappedAsyncResult.cs
- DispatcherSynchronizationContext.cs
- PropertyContainer.cs