जैसा कि एमएसडीएन here बताता है, यह कर सकता है। लेकिन मैंने mscorlib कोड खोदने में 2 घंटे बिताए हैं, क्योंकि कुछ मामलों में बाइनरीफॉर्मेटर ने मेरी विधि को ऑनडिसेरियलाइज्ड BEFORE deserialization constructor के साथ चिह्नित किया है। जो है, आदेशIDDerialializationCallback इंटरफेस के बजाय OnDeserializedAttribute का उपयोग किया जा सकता है?
OnDeserializing(StreamingContext context)
OnDeserialized(StreamingContext context)
.ctor(SerializationInfo info, StreamingContext context)
हालांकि मैं यह
OnDeserializing(StreamingContext context)
.ctor(SerializationInfo info, StreamingContext context)
OnDeserialized(StreamingContext context)
और अंतिम बिंदु होने की उम्मीद कर रहा था था। जब मैंने IDeserializationCallback इंटरफ़ेस को कार्यान्वित किया, तो इसकी विधि ऑनडिसेरियलाइजेशन को कन्स्ट्रक्टर के बाद बुलाया गया था, जैसा कि मैं चाहता था और अपेक्षित था।
मैंने इसे कुछ साधारण वर्ग संरचना पर पुन: उत्पन्न करने की कोशिश की, लेकिन वहां सब ठीक काम किया। हमारी प्रोजेक्ट में ऑरेंज ग्राफ को क्रमबद्ध किया जाना बहुत जटिल है, इसलिए मुझे नहीं पता कि खोदना कहां है। परावर्तक के साथ mscorlib कोड का निरीक्षण करने से बहुत मदद नहीं मिली - समस्या का पता लगाने के लिए deserialization कोड मेरे लिए बहुत जटिल है।
तो, क्या कोई जानता है कि ऐसी समस्या का कारण क्या हो सकता है? हम इस धारणा का उपयोग करते हैं कि ऑनडिसेरियलाइज्ड को कई अन्य स्थानों में कन्स्ट्रक्टर से पहले बुलाया जाता है, इसलिए अब मुझे डर है कि यह बहुत विश्वसनीय नहीं है ...
धन्यवाद!