मैं एक आवेदन के पुराने संस्करण के साथ "SomeClass" deserialize करने की कोशिश कर रहा हूँ। मुझे यह नीचे अपवादDeserialization पीछे की संगतता
सिस्टम। रनटाइम। क्रमबद्धता। क्रमबद्धता अपवाद: ऑब्जेक्टमेनगर को फ़िक्सअप की एक अवैध संख्या मिली। यह आमतौर पर फॉर्मेटर में एक समस्या इंगित करता है।
Deserialization अपवाद फेंकता जब मैं संस्करण 0.9 को क्रमानुसार और संस्करण 0.8 का उपयोग कर deserialize की कोशिश करो। मैंने सोचा कि OptionalField
विशेषता चाल चलती है, लेकिन ऐसा नहीं हुआ।
// Version 0.8
[Serializable()]
class Foo{
Bar b;
}
// Version 0.9
[Serializable()]
class Foo{
Bar b;
[OptionalField]
Zoo z;
}
यह देखते हुए कि मैं संस्करण 0.8 बदल नहीं सकते, मैं कैसे जोड़ना चाहिए फू के लिए और अधिक राज्य वस्तु ऐसी है कि पिछले संस्करणों जो कुछ भी वे कर सकते हैं deserialize कर सकते हैं?
किसी भी सूचक को वास्तव में सराहना की जाएगी।
अद्यतन 1 बार और चिड़ियाघर अन्य कक्षाएं हैं जो धारावाहिक हैं और इसमें हैशटेबल और अन्य धारावाहिक सामान शामिल हैं। सब कुछ उन वर्गों में क्रमिक है। इसके अलावा, मेरे पास कोई स्ट्रैट नहीं है।
चाहे क्षेत्र वैकल्पिक है या नहीं, यहां अप्रासंगिक है - तथ्य यह है कि धारावाहिक संस्करणों में काम नहीं करता है, AFAIK; यह कहना नहीं है कि आप सदस्यों को जोड़ नहीं सकते हैं, निश्चित रूप से आप कर सकते हैं, लेकिन, उदाहरण के लिए, मैं केवल एक क्रियात्मक प्रकार को परिभाषित नहीं कर सकता हूं और मौजूदा के साथ क्रमबद्ध वस्तुओं को deserialize कर सकते हैं - विधानसभाओं के साथ कुछ करने के लिए, या प्रकार 'टोकन ', मुझे लगता है। –
करेफ, 'चिड़ियाघर' का वास्तविक प्रकार क्या है? मुझे याद है कि कुछ प्रकार (सरणी) बस सही काम नहीं कर पाए। –
क्या आप बाइनरी क्रमबद्धता के बजाय एक्सएमएल क्रमबद्धता का उपयोग करने के इच्छुक होंगे? यह अधिक संस्करण-सुरक्षित होगा। – code4life