From 4232a54b32507afeaed5ad317b70ebf9f644160d Mon Sep 17 00:00:00 2001 From: smoogipoo Date: Thu, 7 Dec 2017 03:04:56 +0900 Subject: [PATCH] Make TypedListConverter not reconstruct serializers --- .../Converters/TypedListConverter.cs | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/osu.Game/IO/Serialization/Converters/TypedListConverter.cs b/osu.Game/IO/Serialization/Converters/TypedListConverter.cs index 9c35fae7d4..f8897a4e9d 100644 --- a/osu.Game/IO/Serialization/Converters/TypedListConverter.cs +++ b/osu.Game/IO/Serialization/Converters/TypedListConverter.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -20,12 +19,10 @@ namespace osu.Game.IO.Serialization.Converters { var list = new List(); - var localSerializer = createLocalSerializer(); - var obj = JObject.Load(reader); var lookupTable = new List(); - localSerializer.Populate(obj["LookupTable"].CreateReader(), lookupTable); + serializer.Populate(obj["LookupTable"].CreateReader(), lookupTable); foreach (var tok in obj["Items"]) { @@ -33,7 +30,7 @@ namespace osu.Game.IO.Serialization.Converters var typeName = lookupTable[(int)tok["Type"]]; var instance = (T)Activator.CreateInstance(Type.GetType(typeName)); - localSerializer.Populate(itemReader, instance); + serializer.Populate(itemReader, instance); list.Add(instance); } @@ -45,8 +42,6 @@ namespace osu.Game.IO.Serialization.Converters { var list = (List)value; - var localSerializer = createLocalSerializer(); - var lookupTable = new List(); var objects = new List(); foreach (var item in list) @@ -60,7 +55,7 @@ namespace osu.Game.IO.Serialization.Converters typeId = lookupTable.Count - 1; } - var itemObject = JObject.FromObject(item, localSerializer); + var itemObject = JObject.FromObject(item, serializer); itemObject.AddFirst(new JProperty("Type", typeId)); objects.Add(itemObject); } @@ -68,7 +63,7 @@ namespace osu.Game.IO.Serialization.Converters writer.WriteStartObject(); writer.WritePropertyName("LookupTable"); - localSerializer.Serialize(writer, lookupTable); + serializer.Serialize(writer, lookupTable); writer.WritePropertyName("Items"); writer.WriteStartArray(); @@ -78,12 +73,5 @@ namespace osu.Game.IO.Serialization.Converters writer.WriteEndObject(); } - - private JsonSerializer createLocalSerializer() - { - var localSettings = JsonSerializableExtensions.CreateGlobalSettings(); - localSettings.Converters = localSettings.Converters.Where(c => !(c is TypedListConverter)).ToArray(); - return JsonSerializer.Create(localSettings); - } } }