كيف يمكنني الحصول على مرجع إلى كائن الأصل عند deserializing XML في C #؟
-
03-07-2019 - |
سؤال
وأنا لا يمكن أن يبدو للحصول على هذا العمل، وهنا هو رمز بلادي (تجريد لأسفل): -
[XmlRoot("report")]
public class Report
{
[XmlArray("sections"), XmlArrayItem("section")]
public List<Section> Sections;
}
public class Section
{
public Report Report;
}
وأنا شيء مفقود؟
المحلول
والأشياء الخاصة بك تحتوي على مراجع دائرية التي غير معتمد من قبل في XmlSerializer الصف. هل يمكن بدلا من ذلك أن ننظر في DataContractSerializer حيث يدعم مثل هذه السيناريوهات.
نصائح أخرى
ويجب عليك التأكد من أنك تعرف كيف تريد هذه الفئات إلى تسلسل وإلغاء تسلسل. كتابة XML تريد نتيجة لذلك، ومعرفة كيف تريد الكائنات لتصبح XML والعكس بالعكس. انها ليست عدم التفكير.
وهنا حل بي. قد لا يكون أنيقة كما كنت تتوقع:
public class Report
{
//...
void PostLoad()
{
foreach(Section s in Sections)
{
s.Report = this;
}
}
public static Report Load(string filename)
{
// Load using an XmlSerializer
Report report = ...;
report.PostLoad();
return report;
}
}
لا تنتمي إلى StackOverflow