Make serializer cache use a tuple key

This commit is contained in:
Slendy 2023-04-02 19:39:53 -05:00
commit 89556d5dfa
No known key found for this signature in database
GPG key ID: 7288D68361B91428

View file

@ -17,7 +17,7 @@ namespace LBPUnion.ProjectLighthouse.Serialization;
public static class LighthouseSerializer public static class LighthouseSerializer
{ {
private static readonly Dictionary<Type, CustomXmlSerializer> serializerCache = new(); private static readonly Dictionary<(Type, XmlRootAttribute?), CustomXmlSerializer> serializerCache = new();
private static readonly XmlSerializerNamespaces emptyNamespace = new(new[] private static readonly XmlSerializerNamespaces emptyNamespace = new(new[]
{ {
@ -32,11 +32,11 @@ public static class LighthouseSerializer
public static CustomXmlSerializer GetSerializer(Type type, XmlRootAttribute? rootAttribute = null) public static CustomXmlSerializer GetSerializer(Type type, XmlRootAttribute? rootAttribute = null)
{ {
if (serializerCache.TryGetValue(type, out CustomXmlSerializer? value)) return value; if (serializerCache.TryGetValue((type, rootAttribute), out CustomXmlSerializer? value)) return value;
CustomXmlSerializer serializer = new(type, rootAttribute); CustomXmlSerializer serializer = new(type, rootAttribute);
serializerCache.Add(type, serializer); serializerCache.Add((type, rootAttribute), serializer);
return serializer; return serializer;
} }