首先谢谢下面即将回复的热心、好心的高手,在此申明看清题目,希望回复不要答非所问而且一两句轻描淡写的回复,这样供日后我参考、供大家在网上搜索到后可有效的参考都是一件好事儿。
    下面进入正题:
    首先有这样两个类
    [Serializable]
    public class Department
    {
        private string id;
        priavte string name;
        //...其它
        private IList<Staff> staff = new List<Staff>();        //封装字段        public Department DepartmentClone()
        {            MemoryStream stream = new MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(stream, this.Department);
            stream.Position = 0;            return formatter.Deserialize(stream) as Department;
        }
    }    [Serializable]
    public class Staff
    {
        private string id;
        private string name;
        private string DepId;
        //...其它
       
        //封装字段        public Staff StaffClone()
        {            MemoryStream stream = new MemoryStream();
            BinaryFormatter formatter = new BinaryFormatter();
            formatter.Serialize(stream, this.Staff);
            stream.Position = 0;            return formatter.Deserialize(stream) as Staff;
        }
    }   上面两个类分别表示部门类和员工类,具体里面详情就不具体写出,现有下面XML文件如下:
    <?xml version="1.0" encoding="utf-8" ?>
    <company>
        <department id="1",name="研发部">
            <staff id="1" name="员工张三"></staff>
            <staff id="2" name="员工李四"></staff>
            <staff id="3" name="员工王五"></staff>
            ...
        </department>
        <department id="2",name="行政部">
            <staff id="1" name="员工A"></staff>
            <staff id="2" name="员工B"></staff>
            ...
        </department>
        <department id="3",name="商务部">
            <staff id="1" name="员工1"></staff>
            <staff id="2" name="员工2"></staff>
            <staff id="3" name="员工3"></staff>
            <staff id="4" name="员工4"></staff>
            ...
        </department>
    </company>现将遇到的问题开始描述,我将通过读取XML文件将其数据迭代赋值到Department类中,如下:
    IList<Department> dList = new List<Department>();
    //读取XML文件,此处只为说明,不是具体实现,也与问题无关,所以读者不必参考
    XmlNodeList xnl = XmlHelper.GetXmlNodeList(XmlHelper.LoadXml(filePath), "//department");
    foreach (XmlNode xn in xnl)
      {
         Department department = new Department();   
         department.Id = xn.Attributes["id"].Value;
         department.Name = xn.Attributes["name"].Value;
         
         XmlNodeList subXnl = xn.ChildNodes;
                foreach (XmlNode subXn in subXnl)
                {
                    Staff staff = new Staff();
                    staff.Id = subXn.Attributes["id"].Value;
                    staff.Name = subXn.Attributes["name"].Value;                    department.staff.Add(staff.Clone());
                }                dList.Add(department.Clone());
      }    这样得到的dList中,部门信息为三个,与XML中部门信息一致,但员工信息为XML文件中员工的总和,XML中定义员工为9个,所以在dList中,每个部门下都有9个员工,与现实期望完全不一致。
    我分析问题还在在于深拷贝问题,如果上面描述中没有嵌套类,则不会出现目前遇到的问题,员工类中也有深拷贝方法,但感觉每次操作还是操作同一个员工类地址,请教高手们,该如何做,可以解决此问题。而且可以继续扩展,比如员工类下,还有嵌套类,或嵌套中还有嵌套,如何按上述描述需求解决?全天24小时期待高手给出正确的结果,谢谢。