日期:2014-05-17  浏览次数:21055 次

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

[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的类型了,无法再转成对应的子类,并且数据都丢失了,求解,谢谢!
序列化?反序列化?子类?父类?数据丢失