我的存储库有List<Student>
,List<Course>
并且List<Enrolment>
Enrollment 有 Enrolment.Student 和 Enrolment.Course ,它们是前两个列表中的学生或课程之一的引用。
当我在我的存储库上使用 XmlSerializer 时,它会输出冗余数据,因为它会序列化每个学生的所有属性,List<Student>
然后再次对List<Enrolment>
. 我正在寻找一种优雅的方法来解决这个问题。
反序列化后,我可以使用反序列化创建的重复对象实例中的 ID 值来修复引用,但这似乎很不自然。
修复冗余输出的一种方法是 XmlIgnore Enrolment.Student 和 Enrolment.Course 并为序列化创建另外两个属性 - Enrolment.StudentID 和 Enrolment.CourseID。但是,在反序列化期间,无法设置 Enrolment.Student 和 Enrolment.Course 的引用(AFAIK),因为反序列化的结果List<Student>
不可List<Course>
用。
我想到的另一种方法是在我的对象层次结构中序列化较低,分别执行我的每个列表并控制反序列化的顺序 - 我宁愿不这样做。
另一种方法是 XmlIgnoreList<Enrolment>
并创建一个注册序列化助手类,该类List<Enrolment>
在自身的反序列化完成后进行初始化。这似乎是一个很大的努力。
其他人如何使用 XmlSerializer 序列化/反序列化对同一对象的多个引用?