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())); } } }
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); } } }