Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Description / TypedMessageConverter.cs / 1 / TypedMessageConverter.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Description { using System; using System.ServiceModel.Channels; using System.ServiceModel.Dispatcher; using System.ServiceModel; using System.Runtime.Serialization; using System.Collections; using System.Diagnostics; public abstract class TypedMessageConverter { public static TypedMessageConverter Create(Type messageContract, string action) { return Create(messageContract, action, null, TypeLoader.DefaultDataContractFormatAttribute); } public static TypedMessageConverter Create(Type messageContract, string action, string defaultNamespace) { return Create(messageContract, action, defaultNamespace, TypeLoader.DefaultDataContractFormatAttribute); } public static TypedMessageConverter Create(Type messageContract, string action, XmlSerializerFormatAttribute formatterAttribute) { return Create(messageContract, action, null, formatterAttribute); } public static TypedMessageConverter Create(Type messageContract, string action, DataContractFormatAttribute formatterAttribute) { return Create(messageContract, action, null, formatterAttribute); } public static TypedMessageConverter Create(Type messageContract, String action, String defaultNamespace, XmlSerializerFormatAttribute formatterAttribute) { if (messageContract == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("messageContract")); if (defaultNamespace == null) defaultNamespace = NamingHelper.DefaultNamespace; return new XmlMessageConverter(GetOperationFormatter(messageContract, formatterAttribute, defaultNamespace, action)); } public static TypedMessageConverter Create(Type messageContract, String action, String defaultNamespace, DataContractFormatAttribute formatterAttribute) { if (messageContract == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("messageContract")); if (!messageContract.IsDefined(typeof(MessageContractAttribute), false)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxMessageContractAttributeRequired, messageContract), "messageContract")); if (defaultNamespace == null) defaultNamespace = NamingHelper.DefaultNamespace; return new XmlMessageConverter(GetOperationFormatter(messageContract, formatterAttribute, defaultNamespace, action)); } public abstract Message ToMessage(Object typedMessage); public abstract Message ToMessage(Object typedMessage, MessageVersion version); public abstract Object FromMessage(Message message); static OperationFormatter GetOperationFormatter(Type t, Attribute formatAttribute, string defaultNS, string action) { bool isXmlSerializer = (formatAttribute is XmlSerializerFormatAttribute); TypeLoader typeLoader = new TypeLoader(); MessageDescription message = typeLoader.CreateTypedMessageDescription(t, null, null, defaultNS, action, MessageDirection.Output); ContractDescription contract = new ContractDescription("dummy_contract", defaultNS); OperationDescription operation = new OperationDescription(NamingHelper.XmlName(t.Name), contract, false); operation.Messages.Add(message); if (isXmlSerializer) return XmlSerializerOperationBehavior.CreateOperationFormatter(operation, (XmlSerializerFormatAttribute)formatAttribute); else return new DataContractSerializerOperationFormatter(operation, (DataContractFormatAttribute)formatAttribute, null); } } internal class XmlMessageConverter : TypedMessageConverter { OperationFormatter formatter; internal XmlMessageConverter(OperationFormatter formatter) { this.formatter = formatter; } internal string Action { get { return formatter.RequestAction; } } public override Message ToMessage(Object typedMessage) { return ToMessage(typedMessage, MessageVersion.Soap12WSAddressing10); } public override Message ToMessage(Object typedMessage, MessageVersion version) { if (typedMessage == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("typedMessage")); return formatter.SerializeRequest(version, new object[] { typedMessage }); } public override Object FromMessage(Message message) { DiagnosticUtility.DebugAssert(message.Headers != null, ""); if (this.Action != null && message.Headers.Action != null && message.Headers.Action != this.Action) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxActionMismatch, this.Action, message.Headers.Action))); object[] result = new object[1]; formatter.DeserializeRequest(message, result); return result[0]; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Vector.cs
- RequestResponse.cs
- ProfileGroupSettingsCollection.cs
- HtmlControlPersistable.cs
- DataTable.cs
- DataGridViewSelectedColumnCollection.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- Rotation3DAnimation.cs
- SimpleRecyclingCache.cs
- ObjectView.cs
- SchemeSettingElement.cs
- IisTraceWebEventProvider.cs
- BoundField.cs
- AnimationLayer.cs
- ChannelManager.cs
- ServiceProviders.cs
- PathTooLongException.cs
- CoTaskMemSafeHandle.cs
- InputDevice.cs
- MatrixKeyFrameCollection.cs
- WebDescriptionAttribute.cs
- ViewGenerator.cs
- MetadataCache.cs
- ObjectMemberMapping.cs
- XmlSerializerVersionAttribute.cs
- Separator.cs
- Model3DGroup.cs
- EnumerableRowCollectionExtensions.cs
- clipboard.cs
- Stream.cs
- PagerSettings.cs
- AlgoModule.cs
- OracleCommandSet.cs
- SqlProviderUtilities.cs
- RelationshipEndCollection.cs
- ResourceManagerWrapper.cs
- JsonReader.cs
- precedingquery.cs
- AttachedAnnotation.cs
- Vector3DAnimationUsingKeyFrames.cs
- IsolatedStorageSecurityState.cs
- TypeDelegator.cs
- FormViewRow.cs
- HtmlInputControl.cs
- InputLanguageCollection.cs
- ThemeInfoAttribute.cs
- Canonicalizers.cs
- ProviderIncompatibleException.cs
- Stack.cs
- BitmapEffectInputConnector.cs
- DataGridTextBox.cs
- Line.cs
- ReflectionHelper.cs
- OleDbPropertySetGuid.cs
- SmiTypedGetterSetter.cs
- DispatchProxy.cs
- NameTable.cs
- DynamicRenderer.cs
- FocusManager.cs
- InheritanceUI.cs
- PublisherIdentityPermission.cs
- OracleDataReader.cs
- MediaElement.cs
- QualifierSet.cs
- RuntimeHandles.cs
- SqlClientPermission.cs
- StateRuntime.cs
- DivideByZeroException.cs
- TriggerAction.cs
- Package.cs
- SimpleMailWebEventProvider.cs
- ControlCollection.cs
- EventLevel.cs
- Part.cs
- IUnknownConstantAttribute.cs
- HtmlControl.cs
- BaseAsyncResult.cs
- PerspectiveCamera.cs
- CompositionCommandSet.cs
- _AutoWebProxyScriptWrapper.cs
- IndexingContentUnit.cs
- NativeMethods.cs
- CqlParser.cs
- XmlQualifiedName.cs
- GenericPrincipal.cs
- GrowingArray.cs
- GeometryModel3D.cs
- SessionPageStateSection.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- StandardOleMarshalObject.cs
- StateMachineWorkflowDesigner.cs
- Int32RectValueSerializer.cs
- CompilerScopeManager.cs
- __TransparentProxy.cs
- ScriptModule.cs
- TraceLevelStore.cs
- StringKeyFrameCollection.cs
- AutomationIdentifierGuids.cs
- EncryptedXml.cs
- DataGrid.cs