2011-05-30 18 views
6

की एक सूची क्रमबद्ध करने के लिए कक्षा B से कक्षा A विरासत है।एक्सएमएल बेस क्लास

List<B> myList = new List<B>(); 
myList.Add(new A()); 

जब मैं इस सूची XmlSerializable का उपयोग कर क्रमानुसार करने की कोशिश, एक अपवाद फेंका जाता है: मैं कक्षा B कि A और B आइटम शामिल हैं की एक सूची है। यदि मैं सूची बी के लिए सूची को परिभाषित करता हूं, तो मुझे यह अपवाद नहीं मिलता है। व्युत्पन्न वर्ग को क्रमबद्ध करने का सबसे अच्छा तरीका क्या है?

उत्तर

7

XmlIncludeAttribute चाल करेगा।
यदि आप इस यूआरएल पर जाते हैं, तो आपको वहां एक कोड नमूना भी मिलेगा।

इसके अलावा, उदाहरण में विशेषता विधि पर लागू होती है, लेकिन आप इसे अपने मामले में कक्षा ए लागू करना चाहेंगे।

+0

फिर से धन्यवाद ... आपने मुझे एक बड़ा सिरदर्द बचा लिया है। मैं serialization के कुछ अजीब पहलुओं पर पूरे दिन अटक गया है :) एक संबंधित नोट - चूंकि serializable प्रत्येक सार्वजनिक सदस्य को पाने के माध्यम से जाता है - क्या कुछ प्रकार की सशर्त मिलती है? मैं पूछता हूं क्योंकि मैं इसे बाध्यकारी के लिए भी उपयोग करता हूं, इसलिए मेरा मिलता/सेट गुणों को बदलता है और इस प्रकार दूसरी बार यह 'सेट' (deserializing से) यह मूल रूप से सेट – Steve

+0

में जाने की उम्मीद नहीं थी, मैं इसे 'सशर्त' कहूंगा एक्सेसर्स '(क्या यह संभव है?) – Steve

+0

यकीन नहीं है कि मैं सवाल समझ गया हूं। क्रमिकरण पर यह आपके सभी सार्वजनिक गुणों (फ़ील्ड भी) पर 'प्राप्त' चलाता है। Deserialization पर यह डिफ़ॉल्ट कन्स्ट्रक्टर के माध्यम से एक वस्तु बनाता है और फिर प्रत्येक संपत्ति पर 'सेट' कहते हैं। –

संबंधित मुद्दे