fix: yaml type containers are not being recognized while reading back
This commit is contained in:
@@ -37,17 +37,25 @@ public class SerializedClassConverter : EngineTypeYamlConverterBase<SerializedCl
|
||||
}
|
||||
}
|
||||
|
||||
foreach ((string key, object @object) in publicDictionary)
|
||||
if (@object is IDictionary<object, object> dictionary && dictionary.TryGetValue(nameof(TypeContainer.Type), out object? typeField) && dictionary.TryGetValue(nameof(TypeContainer.Value), out object? valueField))
|
||||
publicDictionary[key] = new TypeContainer() { Type = typeField!.ToString()!, Value = valueField };
|
||||
|
||||
foreach ((string key, object @object) in privateDictionary)
|
||||
if (@object is IDictionary<object, object> dictionary && dictionary.TryGetValue(nameof(TypeContainer.Type), out object? typeField) && dictionary.TryGetValue(nameof(TypeContainer.Value), out object? valueField))
|
||||
privateDictionary[key] = new TypeContainer() { Type = typeField!.ToString()!, Value = valueField };
|
||||
|
||||
Type classType = TypeFactory.GetType(serializedClass.Type);
|
||||
|
||||
foreach ((string key, object @object) in publicDictionary)
|
||||
if (@object is TypeContainer typeContainer)
|
||||
serializedClass.Public.Add(key, Serializer.InternalDeserialize(typeContainer.Value!.ToString()!, TypeFactory.GetType(typeContainer.Type)));
|
||||
serializedClass.Public.Add(key, Serializer.InternalDeserialize(Serializer.Serialize(typeContainer.Value!), TypeFactory.GetType(typeContainer.Type)));
|
||||
else
|
||||
serializedClass.Public.Add(key, Serializer.InternalDeserialize(@object.ToString()!, (classType.GetProperty(key, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)?.PropertyType ?? classType.GetField(key, System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance)?.FieldType)!));
|
||||
|
||||
foreach ((string key, object @object) in privateDictionary)
|
||||
if (@object is TypeContainer typeContainer)
|
||||
serializedClass.Private.Add(key, Serializer.InternalDeserialize(typeContainer.Value!.ToString()!, TypeFactory.GetType(typeContainer.Type)));
|
||||
serializedClass.Private.Add(key, Serializer.InternalDeserialize(Serializer.Serialize(typeContainer.Value!), TypeFactory.GetType(typeContainer.Type)));
|
||||
else
|
||||
serializedClass.Private.Add(key, Serializer.InternalDeserialize(@object.ToString()!, (classType.GetProperty(key, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Default)?.PropertyType ?? classType.GetField(key, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Default)?.FieldType)!));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user