Mercurial > pub > ImplabNet
comparison Implab/Xml/SerializersPool.cs @ 229:5f7a3e1d32b9 v2
JsonXmlReader performance tuning
JsonScanner now operates strings and doesn't
parses number and literals.
Added SerializationHelpers to common serialize/deserialize operations
author | cin |
---|---|
date | Tue, 12 Sep 2017 19:07:42 +0300 |
parents | |
children | 6691aff01de1 |
comparison
equal
deleted
inserted
replaced
228:6fa235c5a760 | 229:5f7a3e1d32b9 |
---|---|
1 using Implab.Components; | |
2 using System; | |
3 using System.Collections.Generic; | |
4 using System.IO; | |
5 using System.Linq; | |
6 using System.Text; | |
7 using System.Threading.Tasks; | |
8 using System.Xml; | |
9 using System.Xml.Serialization; | |
10 | |
11 namespace Implab.Xml { | |
12 public class SerializersPool<T> : ObjectPool<XmlSerializer> { | |
13 | |
14 static readonly SerializersPool<T> _instance = new SerializersPool<T>(); | |
15 | |
16 public static SerializersPool<T> Instance { | |
17 get { return _instance; } | |
18 } | |
19 | |
20 #region implemented abstract members of ObjectPool | |
21 protected override XmlSerializer CreateInstance() { | |
22 return new XmlSerializer(typeof(T)); | |
23 } | |
24 #endregion | |
25 | |
26 public T DeserializeFromString(string data) { | |
27 using (var reader = new StringReader(data)) { | |
28 return Deserialize(reader); | |
29 } | |
30 } | |
31 | |
32 public T Deserialize(TextReader reader) { | |
33 var sr = Allocate(); | |
34 try { | |
35 return (T)sr.Deserialize(reader); | |
36 } finally { | |
37 Release(sr); | |
38 } | |
39 } | |
40 | |
41 public T Deserialize(XmlReader reader) { | |
42 var sr = Allocate(); | |
43 try { | |
44 return (T)sr.Deserialize(reader); | |
45 } finally { | |
46 Release(sr); | |
47 } | |
48 } | |
49 | |
50 public string SerializeAsString(T data) { | |
51 using (var writer = new StringWriter()) { | |
52 Serialize(writer, data); | |
53 return writer.ToString(); | |
54 } | |
55 } | |
56 | |
57 public void Serialize(TextWriter writer, T data) { | |
58 var sr = Allocate(); | |
59 try { | |
60 sr.Serialize(writer, data); | |
61 } finally { | |
62 Release(sr); | |
63 } | |
64 } | |
65 | |
66 public void Serialize(XmlWriter writer, T data) { | |
67 var sr = Allocate(); | |
68 try { | |
69 sr.Serialize(writer, data); | |
70 } finally { | |
71 Release(sr); | |
72 } | |
73 } | |
74 | |
75 } | |
76 } |