CachingXmlSerializer.cs 787 B

123456789101112131415161718192021222324252627282930
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Xml.Serialization;
  4. namespace Wayne.ForecourtControl.Fusion
  5. {
  6. public static class CachingXmlSerializer
  7. {
  8. private static readonly Dictionary<Type, XmlSerializer> Cache = new Dictionary<Type, XmlSerializer>();
  9. private static readonly object SyncRoot = new object();
  10. public static XmlSerializer Create<T>()
  11. {
  12. var type = typeof (T);
  13. if (type == null) throw new ArgumentNullException("type");
  14. lock (SyncRoot)
  15. {
  16. if (!Cache.ContainsKey(type))
  17. {
  18. Cache.Add(type, new XmlSerializer(type));
  19. }
  20. }
  21. return Cache[type];
  22. }
  23. }
  24. }