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
- SocketException.cs
- InfoCardArgumentException.cs
- GlyphRun.cs
- HasCopySemanticsAttribute.cs
- CodeAttributeArgument.cs
- KnownBoxes.cs
- TextTrailingCharacterEllipsis.cs
- _IPv4Address.cs
- TableItemProviderWrapper.cs
- TextSyndicationContent.cs
- DbSetClause.cs
- RecognizeCompletedEventArgs.cs
- PersonalizationProvider.cs
- SoapTypeAttribute.cs
- Hyperlink.cs
- RuntimeResourceSet.cs
- NonSerializedAttribute.cs
- AudioDeviceOut.cs
- WebOperationContext.cs
- ItemAutomationPeer.cs
- DataColumnMapping.cs
- BStrWrapper.cs
- shaperfactoryquerycachekey.cs
- PrimitiveXmlSerializers.cs
- EventDriven.cs
- ProfileGroupSettingsCollection.cs
- HttpResponse.cs
- EntityDataSourceDesignerHelper.cs
- SQLMembershipProvider.cs
- CaseInsensitiveComparer.cs
- ScrollContentPresenter.cs
- MachineSettingsSection.cs
- ConvertersCollection.cs
- LogSwitch.cs
- WhitespaceRule.cs
- RelationshipDetailsCollection.cs
- DesignerActionList.cs
- BitmapEffectDrawing.cs
- XslException.cs
- Intellisense.cs
- DesignSurfaceCollection.cs
- CachedTypeface.cs
- PerformanceCounterLib.cs
- SiteMapNodeItemEventArgs.cs
- _SecureChannel.cs
- MappingSource.cs
- MethodCallTranslator.cs
- Setter.cs
- ResizeGrip.cs
- WebScriptServiceHost.cs
- BufferAllocator.cs
- ResourceDictionaryCollection.cs
- BitmapEditor.cs
- OleDbDataAdapter.cs
- TypeUsage.cs
- tooltip.cs
- RunInstallerAttribute.cs
- FrameworkElementFactoryMarkupObject.cs
- ClientProxyGenerator.cs
- GlyphRun.cs
- CopyEncoder.cs
- HandlerBase.cs
- xmlsaver.cs
- UntypedNullExpression.cs
- LastQueryOperator.cs
- ParameterSubsegment.cs
- EntryPointNotFoundException.cs
- TokenBasedSet.cs
- TextLineBreak.cs
- FixedSOMPageElement.cs
- latinshape.cs
- HiddenFieldPageStatePersister.cs
- IssuedTokenParametersElement.cs
- ToolBar.cs
- SQLSingleStorage.cs
- EventLogTraceListener.cs
- LayoutEngine.cs
- ColumnMapProcessor.cs
- DataControlReferenceCollection.cs
- WebPartZone.cs
- Compensate.cs
- CatalogZoneAutoFormat.cs
- InputBuffer.cs
- NetCodeGroup.cs
- Pair.cs
- XmlDataCollection.cs
- DefaultValueTypeConverter.cs
- XmlSchemaSimpleContent.cs
- StringCollectionEditor.cs
- cookiecontainer.cs
- AppDomainManager.cs
- XmlResolver.cs
- Convert.cs
- WarningException.cs
- EdgeProfileValidation.cs
- StreamingContext.cs
- ProtectedConfigurationSection.cs
- DbQueryCommandTree.cs
- DialogResultConverter.cs
- SHA512Managed.cs