public XmlSerializerOperationBehavior(OperationDescription operation, System.ServiceModel.XmlSerializerFormatAttribute attribute)
 {
     if (operation == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operation");
     }
     this.reflector = new Reflector(operation.DeclaringContract.Namespace, operation.DeclaringContract.ContractType).ReflectOperation(operation, attribute ?? new System.ServiceModel.XmlSerializerFormatAttribute());
 }
 public XmlSerializerOperationBehavior(OperationDescription operation, System.ServiceModel.XmlSerializerFormatAttribute attribute)
 {
     if (operation == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("operation");
     }
     this.reflector = new Reflector(operation.DeclaringContract.Namespace, operation.DeclaringContract.ContractType).ReflectOperation(operation, attribute ?? new System.ServiceModel.XmlSerializerFormatAttribute());
 }
        private XmlQualifiedName ExportFaultElement(FaultDescription fault, System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector operationReflector)
        {
            XmlQualifiedName  name;
            XmlMembersMapping xmlMembersMapping = operationReflector.ImportFaultElement(fault, out name);

            if (operationReflector.IsEncoded)
            {
                this.SoapExporter.ExportMembersMapping(xmlMembersMapping);
                return(name);
            }
            this.XmlExporter.ExportMembersMapping(xmlMembersMapping);
            return(name);
        }
        private void ExportFault(FaultDescription fault, System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector operationReflector)
        {
            Message message = new Message {
                Name = base.GetFaultMessageName(fault.Name)
            };
            XmlQualifiedName elementName = this.ExportFaultElement(fault, operationReflector);

            base.contractContext.WsdlPortType.ServiceDescription.Messages.Add(message);
            MessageContractExporter.AddMessagePart(message, "detail", elementName, null);
            OperationFault operationFault = base.contractContext.GetOperationFault(fault);

            WsdlExporter.WSAddressingHelper.AddActionAttribute(fault.Action, operationFault, base.exporter.PolicyVersion);
            operationFault.Message = new XmlQualifiedName(message.Name, message.ServiceDescription.TargetNamespace);
        }
 internal XmlSerializerOperationBehavior(OperationDescription operation, System.ServiceModel.XmlSerializerFormatAttribute attribute, Reflector parentReflector) : this(operation, attribute)
 {
     this.reflector = parentReflector.ReflectOperation(operation, attribute ?? new System.ServiceModel.XmlSerializerFormatAttribute());
 }
 private XmlSerializerOperationBehavior(System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector reflector, bool builtInOperationBehavior)
 {
     this.reflector = reflector;
     this.builtInOperationBehavior = builtInOperationBehavior;
 }
        private static void AddBehaviors(ContractDescription contract, bool builtInOperationBehavior)
        {
            Reflector reflector = new Reflector(contract.Namespace, contract.ContractType);

            foreach (OperationDescription description in contract.Operations)
            {
                System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector reflector2 = reflector.ReflectOperation(description);
                if ((reflector2 != null) && (description.DeclaringContract == contract))
                {
                    description.Behaviors.Add(new XmlSerializerOperationBehavior(reflector2, builtInOperationBehavior));
                    description.Behaviors.Add(new XmlSerializerOperationGenerator(new XmlSerializerImportOptions()));
                }
            }
        }
 internal XmlSerializerOperationBehavior(OperationDescription operation, System.ServiceModel.XmlSerializerFormatAttribute attribute, Reflector parentReflector) : this(operation, attribute)
 {
     this.reflector = parentReflector.ReflectOperation(operation, attribute ?? new System.ServiceModel.XmlSerializerFormatAttribute());
 }
 private XmlSerializerOperationBehavior(System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector reflector, bool builtInOperationBehavior)
 {
     this.reflector = reflector;
     this.builtInOperationBehavior = builtInOperationBehavior;
 }
 protected override void ExportFaults(object state)
 {
     System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector operationReflector = (System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector)state;
     if (operationReflector.Attribute.SupportFaults)
     {
         foreach (FaultDescription description in base.operation.Faults)
         {
             this.ExportFault(description, operationReflector);
         }
         this.Compile();
     }
     else
     {
         base.ExportFaults(state);
     }
 }
        protected override void ExportBody(int messageIndex, object state)
        {
            MessageDescription messageDescription = base.operation.Messages[messageIndex];
            string             name            = base.contractContext.WsdlPortType.Name;
            string             targetNamespace = base.contractContext.WsdlPortType.ServiceDescription.TargetNamespace;

            MessageContractExporter.MessageDescriptionDictionaryKey key = new MessageContractExporter.MessageDescriptionDictionaryKey(base.contractContext.Contract, messageDescription);
            Message message = base.ExportedMessages.WsdlMessages[key];

            System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector reflector = (System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector)state;
            XmlMembersMapping membersMapping = null;

            if (messageIndex == 0)
            {
                membersMapping = reflector.Request.BodyMapping;
            }
            else
            {
                membersMapping = reflector.Reply.BodyMapping;
            }
            if (membersMapping != null)
            {
                bool isDocWrapped = !reflector.IsRpc && (messageDescription.Body.WrapperName != null);
                this.ExportMembersMapping(membersMapping, message, false, reflector.IsEncoded, reflector.IsRpc, isDocWrapped, false);
                if (reflector.IsRpc)
                {
                    base.AddParameterOrder(base.operation.Messages[messageIndex]);
                    base.ExportedMessages.WrapperNamespaces.Add(key, membersMapping.Namespace);
                }
            }
        }
        protected override void ExportHeaders(int messageIndex, object state)
        {
            string             name            = base.contractContext.WsdlPortType.Name;
            string             targetNamespace = base.contractContext.WsdlPortType.ServiceDescription.TargetNamespace;
            MessageDescription description     = base.operation.Messages[messageIndex];

            if (description.Headers.Count > 0)
            {
                Message message;
                System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector reflector = (System.ServiceModel.Description.XmlSerializerOperationBehavior.Reflector.OperationReflector)state;
                XmlMembersMapping membersMapping = null;
                if (messageIndex == 0)
                {
                    membersMapping = reflector.Request.HeadersMapping;
                }
                else
                {
                    membersMapping = reflector.Reply.HeadersMapping;
                }
                if ((membersMapping != null) && base.CreateHeaderMessage(description, out message))
                {
                    this.ExportMembersMapping(membersMapping, message, false, reflector.IsEncoded, false, false, true);
                }
            }
        }