2012-02-02 16 views
9

मैं बहुत सारे कोड और अंकन कक्षाओं के माध्यम से जा रहा हूं जिन्हें मैं अब सीरियलाइजेशन विशेषता के साथ जारी रखना चाहता हूं। मैंने अभी तक बाइनरी सीरियलाइजेशन/डिसेराइजेशन इंजन नहीं लिखा है, इसलिए अनुमान लगाएं कि मैं पूरा होने के बाद अपने प्रश्न का उत्तर दूंगा! - लेकिन सोचा कि अगर मैं ठीक हूं तो मैं यहां पहले की प्रतिक्रिया प्राप्त करने का प्रयास करूंगा। मैं कुछ कोड में आया हूं जिसमें एक संपत्ति है:ऑटो कार्यान्वित गुण और क्रमबद्धता

public string Id 
    { 
     get; 
     set; 
    } 

क्या "आईडी" क्रमबद्ध हो जाता है? मैं समझता हूं कि कंपाइलर ऑटो के नीचे एक वर्ग सदस्य बनाता है, लेकिन क्या यह सही ढंग से क्रमबद्ध हो जाता है (क्योंकि कक्षा के सभी डेटा सदस्यों को भंडारण में लिखा जाता है)? ऐसा लगता है कि ऐसा नहीं होगा क्योंकि आप गुणों पर सीरियलाइज्ड/गैर-क्रमबद्ध विशेषता नहीं डाल सकते हैं।

अग्रिम धन्यवाद।

+1

"यह निर्भर करता है" जिस पर आप उपयोग करते हैं। रनटाइम क्रमबद्धता, एक्सएमएल क्रमबद्धता, डेटा अनुबंध क्रमिकरण इस संबंध में सभी अलग हैं। –

+0

आप अपनी कक्षा को क्रमबद्ध करने की योजना कैसे बनाते हैं? –

+0

@ जॉन: मैं बाइनरी क्रमबद्धता – Jeb

उत्तर

8

आप, घटनाओं गैर serializable होने के रूप में के समर्थन क्षेत्र चिह्नित करने के लिए [field:NonSerialized] विशेषता का उपयोग कर सकते हैं लेकिन ऐसा लगता है यह स्वत: गुणों के साथ संभव नहीं है। ऑटो-प्रॉपर्टीज के साथ बैकिंग फ़ील्ड को क्रमबद्ध किया जाएगा और उस व्यवहार को रोकने का एकमात्र तरीका उन्हें नियमित गुणों में बदलना है और सामान्य बैकिंग फ़ील्ड्स को [NonSerialized] सामान्य के रूप में एनोटेट करना है।

2

जैसा कि जॉन ने अपनी टिप्पणियों में बताया है, BinaryFormatter (System.Runtime.Serialization.Formatters.Binary) आपके ऑटो-जनरेटिंग बैकिंग फ़ील्ड को क्रमबद्ध करेगा। आप ISerializable इंटरफेस को कार्यान्वित करके कस्टम सीरियलाइजेशन का उपयोग कर सकते हैं और फिर अपनी कक्षा के लिए तय कर सकते हैं कि मूल्य क्रमबद्ध हैं या नहीं।

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