मेरे भंडार है List<Student>
, List<Course>
और List<Enrolment>
जहां एक नामांकन Enrolment.Student और Enrolment.Course जो संदर्भ छात्रों या पिछले दो सूचियों में पाठ्यक्रमों में से एक हैं।नेट XmlSerializer और कई एक ही वस्तु के लिए संदर्भ
जब मैं अपने भंडार पर XmlSerializer का उपयोग यह अनावश्यक डेटा आउटपुट के रूप में यह List<Enrolment>
में उन्हीं छात्रों के लिए हर संदर्भ के लिए तो फिर List<Student>
में प्रत्येक छात्र के सभी गुण serializes। मैं इसे हल करने के लिए एक शानदार तरीका ढूंढ रहा हूं।
अक्रमांकन बाद मैं अक्रमांकन द्वारा बनाई गई नकली वस्तु उदाहरणों में आईडी मानों का उपयोग संदर्भ ठीक कर सकते हैं, लेकिन यह hackish लगता है।
अनावश्यक आउटपुट को ठीक करने का एक तरीका XmlIgnore Enrolment.Student और Enrolment.Course और serialization के लिए दो और गुण बनाएं - Enrolment.StudentID और Enrolment.CourseID। हालांकि deserialization के दौरान, List<Student>
और List<Course>
के deserialization के परिणाम के बाद से Enrolment.Student और Enrolment.Course के लिए संदर्भ सेट नहीं किए जा सकते हैं (AFAIK)।
एक और तरीका जिस बारे में मैंने सोचा था, मेरी ऑब्जेक्ट पदानुक्रम में अलग-अलग क्रमशः क्रमशः मेरी प्रत्येक सूची को अलग-अलग करने और deserialization के क्रम को नियंत्रित करने के लिए है - मैं यह नहीं करता।
एक और तरीका XmlIgnore List<Enrolment>
और एक नामांकन क्रमबद्धता सहायक वर्ग बनाना होगा जो List<Enrolment>
प्रारंभ होता है, जो स्वयं के विलुप्त होने के बाद पूरा हो जाता है। यह बहुत प्रयास की तरह लगता है।
अन्य लोगों को कैसे को क्रमानुसार/एक ही वस्तु XmlSerializer का उपयोग करने के कई संदर्भ deserialize करते हैं?
बहुत आश्वस्त - इस के लिए नया होने के नाते मुझे लगता है कि मुझे कुछ याद आना चाहिए। चूंकि मेरी समस्या आपके पहले परिदृश्य से संबंधित है, इसलिए मैं deserialization को साफ करने के लिए कोड बेस में कुछ बनाने के आपके सुझाव का पालन करूंगा। हो सकता है कि मैं एक IXmlFinalizeDeserialization बनाउंगा जिसे मेरी सभी वस्तुओं में बुलाया जा सकता है, जिनके deserialization अपर्याप्त है और संदर्भ को ठीक करता है। –