コード例 #1
0
 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);
 }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 /// <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);
 }