/Serialization/XmlSerializerCache.cs |
@@ -18,9 +18,12 @@ |
{ |
public static class XmlSerializerCache |
{ |
private static readonly ReaderWriterLockSlim SerializerCacheLock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); |
private static readonly Dictionary<string, XmlSerializer> SerializerCache = new Dictionary<string, XmlSerializer>(); |
private static readonly ReaderWriterLockSlim SerializerCacheLock = |
new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); |
|
private static readonly Dictionary<string, XmlSerializer> SerializerCache = |
new Dictionary<string, XmlSerializer>(); |
|
public static XmlSerializer GetSerializer<T>() |
{ |
return GetSerializer<T>(null); |
@@ -40,9 +43,7 @@ |
{ |
var Signature = MainTypeForSerialization.FullName; |
if (ExtraTypes != null) |
{ |
Signature = ExtraTypes.Aggregate(Signature, (current, tp) => current + ("-" + tp.FullName)); |
} |
Signature = ExtraTypes.Aggregate(Signature, (current, tp) => current + "-" + tp.FullName); |
|
SerializerCacheLock.EnterReadLock(); |
XmlSerializer XmlEventSerializer; |
@@ -93,14 +94,14 @@ |
{ |
try |
{ |
using (MemoryStream memoryStream = new MemoryStream()) |
using (var memoryStream = new MemoryStream()) |
{ |
using (StreamWriter streamWriter = new StreamWriter(memoryStream)) |
using (var streamWriter = new StreamWriter(memoryStream)) |
{ |
streamWriter.Write(XmlData); |
streamWriter.Flush(); |
memoryStream.Position = 0; |
return (T)GetSerializer<T>(ExtraTypes).Deserialize(memoryStream); |
return (T) GetSerializer<T>(ExtraTypes).Deserialize(memoryStream); |
} |
} |
} |
@@ -114,11 +115,11 @@ |
{ |
try |
{ |
using (MemoryStream memoryStream = new MemoryStream()) |
using (var memoryStream = new MemoryStream()) |
{ |
using (StreamReader streamReader = new StreamReader(memoryStream)) |
using (var streamReader = new StreamReader(memoryStream)) |
{ |
using (var xmlWriter = XmlWriter.Create(memoryStream, new XmlWriterSettings { Indent = true })) |
using (var xmlWriter = XmlWriter.Create(memoryStream, new XmlWriterSettings {Indent = true})) |
{ |
var ns = new XmlSerializerNamespaces(); |
ns.Add(string.Empty, string.Empty); |
@@ -179,4 +180,4 @@ |
return Deserialize<T>(reader.ReadToEnd(), null); |
} |
} |
} |
} |