मैं यह कैसे कर सकता हूं? या serializer स्वचालित रूप से रिकर्सन के साथ जाना होगा, और उन सभी बच्चों की वस्तुओं को एक्सएमएल में क्रमबद्ध करें?अन्य वर्गों (रिकर्सिव सीरियलाइजिंग?) की कक्षाओं को क्रमबद्ध करने के लिए कैसे करें
मुझे एक उदाहरण दें कि आप कक्षाओं को क्रमबद्ध कैसे करेंगे जिसमें अन्य वर्गों की वस्तुओं को स्वयं में शामिल किया जाएगा! यह इस सवाल का मूल था!
मैंने यह कोशिश की है, और यह लक्षित XML फ़ाइल में कुछ भी (XML शीर्षलेख को छोड़कर) आउटपुट नहीं किया।
मेरी समस्या यह है कि मुझे एक साधारण वर्ग को क्रमबद्ध करने की आवश्यकता है, जिसमें केवल एक सूची वस्तु है। लेकिन, उन संस्थाओं ने सूची वस्तुओं को भी छुपाया। (एक और प्लस होगा अगर मैं कुछ घटकों के क्रमिकरण से बच सकता हूं, क्योंकि कुछ व्युत्पन्न होते हैं और उनमें शब्दकोश होते हैं)।
public void SaveCurrent(string MapFileName)
{
string MapPath = world_.game_.Content.RootDirectory + "/Maps/" + MapFileName + ".xml";
StreamWriter MapWriter = new StreamWriter(MapPath);
Map SavedMap = new Map();
SavedMap.Entities = world_.Entities;
XmlSerializer xSerializer = new XmlSerializer(SavedMap.GetType());
xSerializer.Serialize(MapWriter, SavedMap);
MapWriter.Close();
}
यह कोड का टुकड़ा है जो क्रमबद्धता करता है।
public class Map
{
internal string MapName;
internal string MapDescription;
internal string MapAuthor;
public List<Entity> Entities = new List<Entity>();
}
और यह वह वर्ग है जो धारावाहिक है।
क्या सीरियलाइजेशन को एक ही असेंबली से बुलाया जाता है, तो आंतरिक को प्रकाशन के रूप में गिना जा सकता है?
कोड SavedMap.GetType()
फ़ंक्शन पर अपवाद फेंकता है, और मैंने typeof(Map)
भी कोशिश की है, लेकिन सफलता के बिना। मुझे लगता है कि ऐसा इसलिए है क्योंकि मुझे प्रत्येक नई कक्षा (गहरी क्रमबद्धता) को संभालने के लिए किसी अन्य तरीके की आवश्यकता है, मैं यह कैसे कर सकता हूं?
इसके अलावा, मुझे कुछ उदाहरण मिल गए हैं कि कोई इंटरफ़ेस विरासत या विशेषता नहीं है, इसलिए मैंने उनको नहीं जोड़ा, लेकिन मैं IXmlSerializable का उपयोग करने की योजना बना रहा हूं, हालांकि मुझे नहीं पता कि कॉल कैसे करें WriteXML कार्यान्वयन के अंदर एक और serialization।
आप क्या कोशिश की है की एक नमूना बता सकते हैं? –
मुझे खेद है कि मैंने पहले ऐसा नहीं किया था। – Johnny
"यदि आंतरिक समान विधानसभा से सीरियलाइजेशन कहा जाता है, तो क्या आंतरिक को प्रकाशन के रूप में गिना जा सकता है?" नहीं। XmlSerializer केवल सार्वजनिक सदस्यों को मानता है। (वास्तव में XmlSerializer कोड कि serialising और deserialising करता है धारण करने के लिए एक गतिशील विधानसभा बनाता है, इसलिए वास्तविक क्रमबद्धता * हमेशा * जगह एक अलग विधानसभा में अपने कोड से ले जाता है।) – itowlson