序列化继续改进

This commit is contained in:
艾竹
2023-01-25 11:11:27 +08:00
parent a5005ac083
commit a01eb8825a
44 changed files with 319 additions and 398 deletions

View File

@@ -1,4 +1,5 @@
using Newtonsoft.Json;
using AIStudio.Wpf.DiagramDesigner.Helpers;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@@ -489,9 +490,24 @@ namespace AIStudio.Wpf.DiagramDesigner
return new Size(double.Parse(pieces[0]), double.Parse(pieces[1]));
}
public static string SerializeDoubleNull(double? point)
{
return point?.ToString();
}
public static double? DeserializeDoubleNull(string point)
{
double? value = null;
if (Double.TryParse(point, out var result))
{
value = result;
}
return value;
}
public static string SerializeObject(object obj, string serializableType)
{
if (serializableType?.ToLower() == "xml")
if (serializableType?.ToLower() == ".xml")
{
XmlSerializer serializer = new XmlSerializer(obj.GetType());
XmlWriterSettings settings = new XmlWriterSettings();
@@ -517,7 +533,24 @@ namespace AIStudio.Wpf.DiagramDesigner
public static SelectableItemBase DeserializeObject(Type type, string serializableString, string serializableType)
{
if (serializableType?.ToLower() == "xml")
if (serializableType?.ToLower() == ".xml")
{
using (StringReader sr = new StringReader(serializableString))
{
XmlSerializer serializer = new XmlSerializer(type);
return serializer.Deserialize(sr) as SelectableItemBase;
}
}
else
{
return JsonConvert.DeserializeObject(serializableString, type) as SelectableItemBase;
}
}
public static SelectableItemBase DeserializeObject(string typename, string serializableString, string serializableType)
{
Type type = TypeHelper.GetType(typename);
if (serializableType?.ToLower() == ".xml")
{
using (StringReader sr = new StringReader(serializableString))
{