Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.ServiceModel.Activities / System / ServiceModel / Activities / SendParametersContent.cs / 1305376 / SendParametersContent.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 SendParametersContent : SendContent { string[] argumentNames; Type[] argumentTypes; public SendParametersContent() : base() { this.Parameters = new OrderedDictionary(); } public SendParametersContent(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; } } internal override bool IsFault { get { if (this.ArgumentTypes.Length == 1) { return ContractInferenceHelper.ExceptionType.IsAssignableFrom(this.ArgumentTypes[0]); } else { return false; } } } 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.SendParametersContentDoesNotSupportMessage(owner.DisplayName, argumentNames[index])); } index++; } if (!metadata.HasViolations) { foreach (KeyValuePair pair in this.Parameters) { RuntimeArgument newRuntimeArgument = new RuntimeArgument(pair.Key, pair.Value.ArgumentType, ArgumentDirection.In); metadata.Bind(pair.Value, newRuntimeArgument); metadata.AddArgument(newRuntimeArgument); } } } internal override void ConfigureInternalSend(InternalSendMessage internalSendMessage, out ToRequest requestFormatter) { //Zero or more arguments requestFormatter = new ToRequest(); foreach (KeyValuePair parameter in this.Parameters) { requestFormatter.Parameters.Add(InArgument.CreateReference(parameter.Value, parameter.Key)); } } internal override void ConfigureInternalSendReply(InternalSendMessage internalSendMessage, out ToReply responseFormatter) { responseFormatter = new ToReply(); foreach (KeyValuePair parameter in this.Parameters) { responseFormatter.Parameters.Add(InArgument.CreateReference(parameter.Value, parameter.Key)); } } internal override void InferMessageDescription(OperationDescription operation, object owner, MessageDirection direction) { ContractInferenceHelper.CheckForDisposableParameters(operation, this.ArgumentTypes); string overridingAction = owner is Send ? ((Send)owner).Action : ((SendReply)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
- SizeKeyFrameCollection.cs
- SmiXetterAccessMap.cs
- ReaderWriterLock.cs
- Vector3DAnimationBase.cs
- ResourceAttributes.cs
- QuaternionValueSerializer.cs
- ToolStripPanel.cs
- IdentityHolder.cs
- TextClipboardData.cs
- SpecularMaterial.cs
- sapiproxy.cs
- IDQuery.cs
- EditingMode.cs
- PanningMessageFilter.cs
- WsdlExporter.cs
- OperatingSystem.cs
- AppDomainProtocolHandler.cs
- StackSpiller.Temps.cs
- RTLAwareMessageBox.cs
- CardSpaceException.cs
- BooleanFacetDescriptionElement.cs
- ControlEvent.cs
- XslCompiledTransform.cs
- CompositeFontInfo.cs
- Predicate.cs
- WsdlExporter.cs
- OptimalBreakSession.cs
- COM2ComponentEditor.cs
- MatrixKeyFrameCollection.cs
- ClientApiGenerator.cs
- ImpersonationContext.cs
- DataObjectPastingEventArgs.cs
- WebPartDisplayMode.cs
- AutomationPatternInfo.cs
- UnitySerializationHolder.cs
- MSHTMLHost.cs
- FixedTextBuilder.cs
- ComponentRenameEvent.cs
- UICuesEvent.cs
- XsltLibrary.cs
- CatalogPartCollection.cs
- IssuanceLicense.cs
- ContentOperations.cs
- TableProviderWrapper.cs
- BindingGroup.cs
- AttributeSetAction.cs
- PrivilegeNotHeldException.cs
- NotImplementedException.cs
- PackageFilter.cs
- shaperfactoryquerycachekey.cs
- ReadOnlyDictionary.cs
- DataColumnMappingCollection.cs
- TextAdaptor.cs
- RemoteWebConfigurationHostStream.cs
- QuadraticBezierSegment.cs
- ExpandSegmentCollection.cs
- ParentUndoUnit.cs
- SqlConnectionPoolGroupProviderInfo.cs
- DNS.cs
- CanonicalFormWriter.cs
- DetailsViewDeletedEventArgs.cs
- WebSysDescriptionAttribute.cs
- SafeHandles.cs
- DateBoldEvent.cs
- AnonymousIdentificationModule.cs
- controlskin.cs
- QilXmlReader.cs
- PropertyEmitter.cs
- PageFunction.cs
- IconHelper.cs
- XpsManager.cs
- WindowsGrip.cs
- ClientRoleProvider.cs
- GACMembershipCondition.cs
- XmlObjectSerializerReadContextComplex.cs
- ISCIIEncoding.cs
- XamlSerializerUtil.cs
- Delay.cs
- FileDataSourceCache.cs
- PaginationProgressEventArgs.cs
- designeractionlistschangedeventargs.cs
- ParentQuery.cs
- PtsHelper.cs
- MessagePartSpecification.cs
- DropShadowBitmapEffect.cs
- TextServicesPropertyRanges.cs
- SharedPersonalizationStateInfo.cs
- XmlAttributeCache.cs
- XmlWrappingReader.cs
- WebPartMovingEventArgs.cs
- TextPointer.cs
- templategroup.cs
- XmlSerializerFactory.cs
- ArgumentFixer.cs
- ListViewInsertedEventArgs.cs
- HwndKeyboardInputProvider.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- Maps.cs
- XPathPatternParser.cs
- ThreadAbortException.cs