using System; using System.Collections.Generic; using System.Runtime.Serialization; using System.ServiceModel.Description; using System.Xml; namespace Utils { public class ApplyCyclicDataContractSerializerOperationBehavior : DataContractSerializerOperationBehavior { private readonly Int32 maxItemsInObjectGraph; private readonly bool ignoreExtensionDataObject; private readonly bool preserveObjectReferences; public ApplyCyclicDataContractSerializerOperationBehavior(OperationDescription operationDescription, Int32 maxItemsInObjectGraph, bool ignoreExtensionDataObject, bool preserveObjectReferences) : base(operationDescription) { this.maxItemsInObjectGraph = maxItemsInObjectGraph; this.ignoreExtensionDataObject = ignoreExtensionDataObject; this.preserveObjectReferences = preserveObjectReferences; } public override XmlObjectSerializer CreateSerializer(Type type, String name, String ns, IList knownTypes) { return (new DataContractSerializer(type, name, ns, knownTypes, maxItemsInObjectGraph, ignoreExtensionDataObject, true, null /*dataContractSurrogate*/)); } public override XmlObjectSerializer CreateSerializer(Type type, XmlDictionaryString name, XmlDictionaryString ns, IList knownTypes) { return (new DataContractSerializer(type, name, ns, knownTypes, maxItemsInObjectGraph, ignoreExtensionDataObject, true, null /*dataContractSurrogate*/)); } } }