//----------------------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.ServiceModel.Dispatcher { using System; using System.ServiceModel.Channels; using System.Collections; using System.Runtime.Serialization; using System.ServiceModel.Diagnostics; internal sealed class MessageOperationFormatter : IClientMessageFormatter, IDispatchMessageFormatter { static MessageOperationFormatter instance; internal static MessageOperationFormatter Instance { get { if (MessageOperationFormatter.instance == null) MessageOperationFormatter.instance = new MessageOperationFormatter(); return MessageOperationFormatter.instance; } } public object DeserializeReply(Message message, object[] parameters) { if (message == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("message")); if (parameters != null && parameters.Length > 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxParametersMustBeEmpty))); return message; } public void DeserializeRequest(Message message, object[] parameters) { if (message == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("message")); if (parameters == null) throw TraceUtility.ThrowHelperError(new ArgumentNullException("parameters"), message); if (parameters.Length != 1) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxParameterMustBeArrayOfOneElement))); parameters[0] = message; } public bool IsFault(string operation, Exception error) { return false; } public MessageFault SerializeFault(Exception error) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.GetString(SR.SFxMessageOperationFormatterCannotSerializeFault))); } public Message SerializeReply(MessageVersion messageVersion, object[] parameters, object result) { if (!(result is Message)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxResultMustBeMessage))); if (parameters != null && parameters.Length > 0) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxParametersMustBeEmpty))); return (Message)result; } public Message SerializeRequest(MessageVersion messageVersion, object[] parameters) { if (parameters == null) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentNullException("parameters")); if (parameters.Length != 1 || !(parameters[0] is Message)) throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentException(SR.GetString(SR.SFxParameterMustBeMessage))); return (Message)parameters[0]; } } }