wasSharpNET

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 16  →  ?path2? @ 22
/Serialization/XmlSerializerCache.cs
@@ -8,19 +8,18 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Linq;
using System.Threading;
using System.Xml;
using System.Xml.Linq;
using System.Xml.Serialization;
using wasSharp;
 
namespace wasSharpNET.Serialization
{
public static class XmlSerializerCache
{
private static ReaderWriterLockSlim SerializerCacheLock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
private static 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>()
{
@@ -39,15 +38,14 @@
 
public static XmlSerializer GetSerializer(Type MainTypeForSerialization, Type[] ExtraTypes)
{
string Signature = MainTypeForSerialization.FullName;
var Signature = MainTypeForSerialization.FullName;
if (ExtraTypes != null)
{
foreach (Type Tp in ExtraTypes)
Signature += "-" + Tp.FullName;
Signature = ExtraTypes.Aggregate(Signature, (current, tp) => current + ("-" + tp.FullName));
}
 
SerializerCacheLock.EnterReadLock();
XmlSerializer XmlEventSerializer = null;
XmlSerializer XmlEventSerializer;
if (SerializerCache.TryGetValue(Signature, out XmlEventSerializer))
{
SerializerCacheLock.ExitReadLock();
@@ -77,7 +75,7 @@
{
using (var XmlReader = XmlData.Root.CreateReader())
{
return (T)GetSerializer<T>(ExtraTypes).Deserialize(XmlReader);
return (T) GetSerializer<T>(ExtraTypes).Deserialize(XmlReader);
}
}
catch (Exception ex)
@@ -122,7 +120,7 @@
{
using (var xmlWriter = XmlWriter.Create(memoryStream, new XmlWriterSettings { Indent = true }))
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
var ns = new XmlSerializerNamespaces();
ns.Add(string.Empty, string.Empty);
GetSerializer<T>(ExtraTypes).Serialize(xmlWriter, Object, ns);
xmlWriter.Flush();
@@ -150,7 +148,7 @@
 
public static T Deserialize<T>(Stream stream)
{
using (MemoryStream memoryStream = new MemoryStream())
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
memoryStream.Position = 0L;