Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Activities / System / ServiceModel / Activities / ReceiveParametersContent.cs / 1305376 / ReceiveParametersContent.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.Runtime.Collections; using System.ServiceModel.Description; using System.Windows.Markup; [ContentProperty("Parameters")] public sealed class ReceiveParametersContent : ReceiveContent { string[] argumentNames; Type[] argumentTypes; public ReceiveParametersContent() : base() { this.Parameters = new OrderedDictionary(); } public ReceiveParametersContent(IDictionary parameters) : base() { if (parameters == null) { throw FxTrace.Exception.ArgumentNull("parameters"); } this.Parameters = new OrderedDictionary (parameters); } public IDictionary Parameters { get; private set; } internal string[] ArgumentNames { get { if (this.argumentNames == null) { ShredParameters(); } return this.argumentNames; } } internal Type[] ArgumentTypes { get { if (this.argumentTypes == null) { ShredParameters(); } return this.argumentTypes; } } void ShredParameters() { // Turn Dictionary into ordered Argument arrays int argumentCount = this.Parameters.Count; this.argumentNames = new string[argumentCount]; this.argumentTypes = new Type[argumentCount]; int index = 0; foreach (KeyValuePair pair in this.Parameters) { this.argumentNames[index] = pair.Key; this.argumentTypes[index] = pair.Value.ArgumentType; index++; } } internal override void CacheMetadata(ActivityMetadata metadata, Activity owner, string operationName) { // force a shred for every CacheMetadata call ShredParameters(); int index = 0; foreach (Type argumentType in this.argumentTypes) { if (argumentType == null || argumentType == TypeHelper.VoidType) { metadata.AddValidationError(SR.ArgumentCannotHaveNullOrVoidType(owner.DisplayName, argumentNames[index])); } if (argumentType == MessageDescription.TypeOfUntypedMessage || MessageBuilder.IsMessageContract(argumentType)) { metadata.AddValidationError(SR.ReceiveParametersContentDoesNotSupportMessage(owner.DisplayName, argumentNames[index])); } index++; } if (!metadata.HasViolations) { foreach (KeyValuePair pair in this.Parameters) { RuntimeArgument newRuntimeArgument = new RuntimeArgument(pair.Key, pair.Value.ArgumentType, ArgumentDirection.Out); metadata.Bind(pair.Value, newRuntimeArgument); metadata.AddArgument(newRuntimeArgument); } } } internal override void ConfigureInternalReceive(InternalReceiveMessage internalReceiveMessage, out FromRequest requestFormatter) { requestFormatter = new FromRequest(); foreach (KeyValuePair parameter in this.Parameters) { requestFormatter.Parameters.Add(OutArgument.CreateReference(parameter.Value, parameter.Key)); } } internal override void ConfigureInternalReceiveReply(InternalReceiveMessage internalReceiveMessage, out FromReply responseFormatter) { responseFormatter = new FromReply(); foreach (KeyValuePair parameter in this.Parameters) { responseFormatter.Parameters.Add(OutArgument.CreateReference(parameter.Value, parameter.Key)); } } internal override void InferMessageDescription(OperationDescription operation, object owner, MessageDirection direction) { ContractInferenceHelper.CheckForDisposableParameters(operation, this.argumentTypes); string overridingAction = owner is Receive ? ((Receive)owner).Action : ((ReceiveReply)owner).Action; if (direction == MessageDirection.Input) { ContractInferenceHelper.AddInputMessage(operation, overridingAction, this.argumentNames, this.argumentTypes); } else { ContractInferenceHelper.AddOutputMessage(operation, overridingAction, this.ArgumentNames, this.ArgumentTypes); } } } } // 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
- _ScatterGatherBuffers.cs
- AssemblyCollection.cs
- CodeNamespace.cs
- SHA512.cs
- ListSortDescriptionCollection.cs
- IndentedTextWriter.cs
- DataControlPagerLinkButton.cs
- TableLayoutStyleCollection.cs
- DataMemberListEditor.cs
- Pkcs9Attribute.cs
- SliderAutomationPeer.cs
- Speller.cs
- CodeTypeReference.cs
- MultiView.cs
- ObjectContextServiceProvider.cs
- ApplicationBuildProvider.cs
- IsolationInterop.cs
- WebPartCloseVerb.cs
- Application.cs
- Run.cs
- StringStorage.cs
- XmlnsDictionary.cs
- DivideByZeroException.cs
- HttpHandlersInstallComponent.cs
- SudsParser.cs
- Utils.cs
- ImageFormatConverter.cs
- PermissionRequestEvidence.cs
- DPCustomTypeDescriptor.cs
- IndexedGlyphRun.cs
- Point3D.cs
- Queue.cs
- InternalSafeNativeMethods.cs
- QueryOutputWriter.cs
- TextServicesContext.cs
- Transactions.cs
- Rect3DConverter.cs
- EdmRelationshipRoleAttribute.cs
- JapaneseLunisolarCalendar.cs
- ResolveMatchesCD1.cs
- TimeStampChecker.cs
- TypedElement.cs
- FixedTextView.cs
- WindowsSlider.cs
- HealthMonitoringSectionHelper.cs
- StringBuilder.cs
- MediaElementAutomationPeer.cs
- Pts.cs
- AuthenticationConfig.cs
- PropertyGrid.cs
- List.cs
- FormViewInsertedEventArgs.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- TypeUnloadedException.cs
- CursorInteropHelper.cs
- ObjectStateEntry.cs
- EntityUtil.cs
- CacheMemory.cs
- TextOnlyOutput.cs
- SqlNamer.cs
- UrlAuthFailedErrorFormatter.cs
- StringFormat.cs
- Semaphore.cs
- InitializerFacet.cs
- WebFormDesignerActionService.cs
- DefaultPropertiesToSend.cs
- ListenerConnectionModeReader.cs
- MouseGestureConverter.cs
- TextStore.cs
- SoapElementAttribute.cs
- CommandHelper.cs
- WebService.cs
- Formatter.cs
- SQLInt16.cs
- CellCreator.cs
- ChineseLunisolarCalendar.cs
- EncoderParameters.cs
- DataGridViewCellCancelEventArgs.cs
- InstanceKeyView.cs
- Hash.cs
- C14NUtil.cs
- HtmlForm.cs
- HtmlElementErrorEventArgs.cs
- ThreadExceptionDialog.cs
- ReservationCollection.cs
- EntityClientCacheKey.cs
- CornerRadius.cs
- PointConverter.cs
- CodeCommentStatementCollection.cs
- XPathNodeHelper.cs
- MediaTimeline.cs
- OpacityConverter.cs
- Double.cs
- DocumentPaginator.cs
- CodeExpressionStatement.cs
- WorkflowElementDialog.cs
- BaseTemplateBuildProvider.cs
- SamlAction.cs
- HandlerMappingMemo.cs
- SoapConverter.cs