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
- TrustSection.cs
- MemberRelationshipService.cs
- SoapCodeExporter.cs
- RichTextBoxDesigner.cs
- ValueTypeFixupInfo.cs
- Permission.cs
- ConnectionInterfaceCollection.cs
- SecurityCookieModeValidator.cs
- TransformDescriptor.cs
- ConnectionStringsExpressionBuilder.cs
- PropertyGroupDescription.cs
- DataSetMappper.cs
- RecommendedAsConfigurableAttribute.cs
- HtmlUtf8RawTextWriter.cs
- NotCondition.cs
- SqlBulkCopyColumnMappingCollection.cs
- EntityConnectionStringBuilder.cs
- ToolStripItemCollection.cs
- OleDbParameterCollection.cs
- PrivilegeNotHeldException.cs
- EmptyCollection.cs
- HashSet.cs
- TextPointer.cs
- DataBindingValueUIHandler.cs
- ObjectDataSource.cs
- EmptyReadOnlyDictionaryInternal.cs
- BitSet.cs
- SqlMethodAttribute.cs
- DisposableCollectionWrapper.cs
- InputReferenceExpression.cs
- GridEntryCollection.cs
- DecoderFallback.cs
- SerializationSectionGroup.cs
- WebPartDisplayModeEventArgs.cs
- TreeNodeBinding.cs
- ComponentRenameEvent.cs
- HostedTcpTransportManager.cs
- PromptBuilder.cs
- GetCertificateRequest.cs
- InnerItemCollectionView.cs
- GenericIdentity.cs
- EmptyEnumerator.cs
- Type.cs
- Mapping.cs
- BinHexEncoder.cs
- OuterGlowBitmapEffect.cs
- ContentType.cs
- ToolStripOverflowButton.cs
- ForEachAction.cs
- SqlInternalConnectionSmi.cs
- ComPlusThreadInitializer.cs
- ChangeProcessor.cs
- KeyConstraint.cs
- ReturnEventArgs.cs
- BaseTemplateParser.cs
- TemplateEditingService.cs
- Material.cs
- DesigntimeLicenseContextSerializer.cs
- _DisconnectOverlappedAsyncResult.cs
- ConfigurationSchemaErrors.cs
- BrowserCapabilitiesCompiler.cs
- ConstrainedGroup.cs
- XamlSerializerUtil.cs
- SqlExpressionNullability.cs
- KeyedQueue.cs
- SendKeys.cs
- DropSource.cs
- DynamicMetaObjectBinder.cs
- EmbeddedMailObject.cs
- IntPtr.cs
- TextBoxView.cs
- ToolStripItemTextRenderEventArgs.cs
- Cursors.cs
- SplineKeyFrames.cs
- WebPartZoneBase.cs
- WCFModelStrings.Designer.cs
- BaseTemplateParser.cs
- BuildManagerHost.cs
- ConcurrentDictionary.cs
- WeakEventTable.cs
- TakeOrSkipWhileQueryOperator.cs
- SQLBoolean.cs
- EventManager.cs
- XmlComment.cs
- basecomparevalidator.cs
- System.Data_BID.cs
- _ContextAwareResult.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- SecurityToken.cs
- RubberbandSelector.cs
- TextContainerChangeEventArgs.cs
- MetadataArtifactLoaderComposite.cs
- ProviderException.cs
- NativeMethods.cs
- CompilerParameters.cs
- XmlnsDefinitionAttribute.cs
- DefaultTraceListener.cs
- XmlMapping.cs
- CaretElement.cs
- NullExtension.cs