mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-14 05:06:36 +08:00
序列化继续改进
This commit is contained in:
@@ -25,12 +25,26 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
Offset = viewmodel.Offset;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
[XmlIgnore]
|
||||
public double? Distance
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[JsonIgnore]
|
||||
[XmlAttribute("Distance")]
|
||||
public string XmlDistance
|
||||
{
|
||||
get
|
||||
{
|
||||
return SerializeHelper.SerializeDoubleNull(Distance);
|
||||
}
|
||||
set
|
||||
{
|
||||
Distance = SerializeHelper.DeserializeDoubleNull(value);
|
||||
}
|
||||
}
|
||||
|
||||
[XmlIgnore]
|
||||
public Point Offset
|
||||
{
|
||||
|
||||
@@ -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))
|
||||
{
|
||||
|
||||
@@ -10,13 +10,25 @@ namespace AIStudio.Wpf.DiagramDesigner.Models
|
||||
public class SerializableItem
|
||||
{
|
||||
[XmlIgnore]
|
||||
public Type Type
|
||||
public Type ModelType
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string TypeName
|
||||
public string ModelTypeName
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlIgnore]
|
||||
public Type SerializableType
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string SerializableTypeName
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user