public object FromXML(string xml, Type type, AssemblyDataContractResolver res = null) { if (!string.IsNullOrEmpty(xml)) { using (MemoryStream xms = new MemoryStream(Encoding.UTF8.GetBytes(xml))) using (var rd = XmlDictionaryReader.CreateTextReader(xms, new XmlDictionaryReaderQuotas())) { var x = getSerializer(type, res ?? _resolver, null); var s = x.ReadObject(rd, false, res ?? _resolver); return(s); } } return(null); }
public string ToXML(object o, AssemblyDataContractResolver res, string root = null) { string serializedValue = ""; var ms = new MemoryStream(); var vr = XmlDictionaryWriter.CreateTextWriter(ms); var ser = getSerializer(o.GetType(), res, root); ser.WriteObject(vr, o, res); vr.Flush(); ms.Position = 0; using (var sr = new StreamReader(ms, Encoding.UTF8)) { serializedValue = sr.ReadToEnd(); } ms.Close(); //vr.Close(); -- hope ms.close will dispose textwritter too. return(serializedValue); }
private static DataContractSerializer getSerializer(Type t, AssemblyDataContractResolver res, string root) { var x = new DataContractSerializer(t, !string.IsNullOrEmpty(root) ? root : t.Name, "", res.KnownTypes); return(x); }
/// <summary> /// List of assemblies to be considered in serialization /// </summary> /// <param name="assemblyNames"></param> public DataContractPersistenceService(IEnumerable <string> assemblyNames, IServiceProvider serviceProvider) : base(serviceProvider) { _resolver = new AssemblyDataContractResolver(assemblyNames); }