反序列化后,子类对象自动转成父类,并且无法恢复成子类,数据丢失,求解

nada123456789 2013-10-29 07:04:55

[Serializable]
public class jProcess
{
public string Name { get; set; }
public List<jBaseNode> ProcessNodes { get; set; }
public jProcess()
{
ProcessNodes = new List<jBaseNode>();
}

public string GenerateProgress(string currentTaskName)
{
jTask firstTask = ProcessNodes.Where(p => p is jTask).FirstOrDefault() as jTask;
StringBuilder sb = new StringBuilder ();
sb.Append("<span class='blue'>");
Build(currentTaskName,firstTask,sb);
return sb.ToString().TrimEnd('-','-','>');


}

private void Build(string currentTaskName,jTask task,StringBuilder sb)
{
sb.Append(task.AssigneeName+task.Remark);
if(task.Name==currentTaskName)
{
sb.Append("</span>");
}
sb.Append("-->");
jTask nextTask = task.TransitionList.Where(t=>t.Selected).FirstOrDefault().TargetNode as jTask;
if(nextTask==null)
{
return;
}
else
{
Build(currentTaskName,nextTask,sb);
}
}
}

这是我序列化的对象类,他包含一个List<jBaseNode> ProcessNodes集合,其中jBaseNode是基类,我有很多个子类继承自他,问题是序列化之后,得到的字符串里面是包含子类数据的,但是反序列化以后,生成的List<jBaseNode> ProcessNodes集合,里边的所有对象都是jBaseNode的类型了,无法再转成对应的子类,并且数据都丢失了,求解,谢谢!
...全文
778 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nada123456789 2013-11-02
  • 打赏
  • 举报
回复
忘了说了,最后还是解决了,序列化成json格式确实不能用于多态,换成XmlSerializer就解决了,虽然数据量大了很多,但是类型信息全部保留了。
nada123456789 2013-10-30
  • 打赏
  • 举报
回复
引用 1 楼 hdhai9451 的回复:
系列化和反系列化是类对象转换成XML,以及XML转换成类,看你的代码好象是你想自己生成的.
这个类只是我要序列化的类,里面的代码不用看,关键是里边的这个List<jBaseNode> ProcessNodes集合。 我序列化的时候用的是JavaScriptSerializer,序列化存成一个字符串,然后再通过JavaScriptSerializer反序列化的时候,子类的数据就丢了,只保留了父类字段的数据。不知道是不是JavaScriptSerializer无法保留类型信息,我在尝试用XmlSerializer,好像还是有问题。。。
Andy__Huang 2013-10-29
  • 打赏
  • 举报
回复
对象系列化与反系列化 . http://blog.csdn.net/hdhai9451/article/details/12129579
Andy__Huang 2013-10-29
  • 打赏
  • 举报
回复
系列化和反系列化是类对象转换成XML,以及XML转换成类,看你的代码好象是你想自己生成的.
内容概要:本文围绕城市场景下的无人机三维路径规划问题,提出了一种新颖的多目标粒群优化算法(NMOPSO),旨在解决高维复杂环境中路径规划面临的多重挑战。研究聚焦于导航变量的多目标优化,构建了一个包含路径长度、飞行安全性、能量消耗等多个相互冲突目标的优化模型,并采用改进的粒群算法进行高效搜索,最终获得一组Pareto最优解集,为实际决策提供多样化路径选择方案。该方法结合Matlab代码实现,详细阐述了算法的设计机制、数学建模流程及仿真验证过程,充分展示了其在密集城市建筑环境中有效规避障碍物、满足飞行动力学约束并实现多目标权衡的能力,具有较强的工程应用价值。; 适合人群:具备一定优化算法理论基础和Matlab编程能力,从事无人机路径规划、智能交通系统、自动化控制、人工智能应用等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于城市环境中的无人机物流配送、巡检监控、应急救援等实际任务的三维路径规划;②为高维、非线性、多约束的多目标优化问题提供有效的算法设计思路与改进参考;③通过Matlab仿真平台复现算法,进一步开展性能测试、参数调优与算法对比研究,推动相关领域的技术创新。; 阅读建议:此资源强调算法原理与工程实践的深度融合,建议读者重点研读目标函数的构建方式、约束条件的处理策略以及NMOPSO算法的核心改进机制,并务必动手运行和调试所提供的Matlab代码,以深入理解算法在三维空间路径优化中的具体实现细节与实际表现。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧