From 9cee44f4d269065ad7f8bca39b4084ab7e5dbe53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20L=C3=BCbe=C3=9F?= Date: Fri, 22 Mar 2024 10:15:10 +0100 Subject: [PATCH] ScriptCore: Fixed error when deserializing list of strings --- ScriptCore/Serialization/DeserializationObject.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ScriptCore/Serialization/DeserializationObject.cs b/ScriptCore/Serialization/DeserializationObject.cs index e7cbd1b..96c3373 100644 --- a/ScriptCore/Serialization/DeserializationObject.cs +++ b/ScriptCore/Serialization/DeserializationObject.cs @@ -446,7 +446,7 @@ public class DeserializationObject for (int i = 0; i < count; i++) { - object? elementValue = ActivatorExtension.CreateInstanceSafe(elementType); + object? elementValue = NeedsInstance(elementType) ? ActivatorExtension.CreateInstanceSafe(elementType) : null; object? newValue = deserializedObject.DeserializeField(elementValue, elementType, $"{i}"); @@ -464,6 +464,19 @@ public class DeserializationObject return deserializedObject._instance; } + private bool NeedsInstance(Type type) + { + if (type.IsClass) + { + if (type == typeof(string)) + return false; + + return true; + } + + return true; + } + public object DeserializeEnum(string fieldName, Type enumType) { if (GetFieldValue(fieldName, SerializationType.Enum) is not string valueName)