ScriptCore: Fixed error when deserializing list of strings

This commit is contained in:
Simon Lübeß
2024-03-22 10:15:24 +01:00
parent c6c47d0c0e
commit 9cee44f4d2
@@ -446,7 +446,7 @@ public class DeserializationObject
for (int i = 0; i < count; i++) 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}"); object? newValue = deserializedObject.DeserializeField(elementValue, elementType, $"{i}");
@@ -464,6 +464,19 @@ public class DeserializationObject
return deserializedObject._instance; 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) public object DeserializeEnum(string fieldName, Type enumType)
{ {
if (GetFieldValue(fieldName, SerializationType.Enum) is not string valueName) if (GetFieldValue(fieldName, SerializationType.Enum) is not string valueName)