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
- ApplicationSettingsBase.cs
- ThousandthOfEmRealPoints.cs
- GridViewSelectEventArgs.cs
- BlurEffect.cs
- DiscoveryMessageSequenceCD1.cs
- FontNamesConverter.cs
- SqlBuffer.cs
- PageContentAsyncResult.cs
- Blend.cs
- Popup.cs
- LookupBindingPropertiesAttribute.cs
- ProfileGroupSettings.cs
- ObjectListDataBindEventArgs.cs
- SpellerError.cs
- RangeBase.cs
- URLEditor.cs
- SoapUnknownHeader.cs
- EntityDataSourceContainerNameConverter.cs
- PowerStatus.cs
- GroupedContextMenuStrip.cs
- StringStorage.cs
- ImageAttributes.cs
- NotCondition.cs
- EntityContainerEmitter.cs
- SpellerHighlightLayer.cs
- InternalConfigHost.cs
- ProcessThread.cs
- MailAddressCollection.cs
- UrlPath.cs
- XmlChoiceIdentifierAttribute.cs
- DbQueryCommandTree.cs
- ToolBarPanel.cs
- NativeRecognizer.cs
- SqlClientWrapperSmiStreamChars.cs
- PathTooLongException.cs
- dataprotectionpermission.cs
- CorePropertiesFilter.cs
- basevalidator.cs
- DataTableNewRowEvent.cs
- DashStyle.cs
- TdsParserSessionPool.cs
- DataGridViewTopLeftHeaderCell.cs
- TraceFilter.cs
- FontInfo.cs
- Int32.cs
- UserControlAutomationPeer.cs
- ThemeableAttribute.cs
- StrongNamePublicKeyBlob.cs
- SQLMembershipProvider.cs
- DbXmlEnabledProviderManifest.cs
- MergeFailedEvent.cs
- WebPartConnectVerb.cs
- MemberBinding.cs
- DetailsViewPagerRow.cs
- TextShapeableCharacters.cs
- WSSecurityXXX2005.cs
- StructuralType.cs
- BitmapDecoder.cs
- BinHexEncoder.cs
- safelink.cs
- ObjectManager.cs
- ObjectDataSourceSelectingEventArgs.cs
- HealthMonitoringSection.cs
- XNodeNavigator.cs
- UiaCoreApi.cs
- ServiceModelStringsVersion1.cs
- SkewTransform.cs
- GPRECTF.cs
- VirtualDirectoryMapping.cs
- WebBrowserUriTypeConverter.cs
- HttpServerProtocol.cs
- TextDecoration.cs
- GroupByExpressionRewriter.cs
- NativeObjectSecurity.cs
- ProtocolsSection.cs
- webeventbuffer.cs
- Content.cs
- Control.cs
- DesigntimeLicenseContext.cs
- sitestring.cs
- TableCellCollection.cs
- TextContainerHelper.cs
- HostingEnvironmentSection.cs
- ClientConfigurationSystem.cs
- DragEvent.cs
- DockPattern.cs
- FocusManager.cs
- SimpleWorkerRequest.cs
- AdornerPresentationContext.cs
- FontEmbeddingManager.cs
- XPathNodeHelper.cs
- LinkLabelLinkClickedEvent.cs
- CompilationSection.cs
- MergeFailedEvent.cs
- FixUp.cs
- SystemIPv4InterfaceProperties.cs
- SortExpressionBuilder.cs
- SqlGatherConsumedAliases.cs
- TypefaceMetricsCache.cs
- DrawingDrawingContext.cs