2010-04-06 6 views
6

के बीच अंतर मैं Transcender पर इस सवाल में आए क्या है:[OptionalField] और [NonSerialized]

क्या आप एक क्षेत्र के लिए आवेदन करना चाहिए अगर अपने मूल्य अक्रमांकन दौरान की आवश्यकता नहीं है?

मेरे = [NonSerialized], उत्तर = [OptionalField]

मेरे पेट प्रतिक्रिया थी NonSerialised लेकिन Transcender कहता है कि मैं गलत हूँ। मेरे पास एक अच्छा विचार है कि [Nonseralized] विशेषता के संबंध में क्या देखना है, लेकिन फिर भी मैं वास्तव में इसे साफ़ करना चाहूंगा।

जहां तक ​​मैं पूर्व को बता सकता हूं कि एक ही असेंबली के नए और पुराने संस्करणों के बीच संस्करण विवादों के साथ संबंध है। उत्तरार्द्ध एक क्षेत्र FULLSTOP क्रमबद्ध करने के साथ अधिक चिंतित है। क्या कोई और चीज है जो इन दोनों को अलग कर सकती है? एमएसडीएन वास्तव में इसके बारे में बहुत कुछ नहीं कहता है क्योंकि इन दोनों का उपयोग XMLIgnoreAttribute का उपयोग कर XMLFormatter के साथ बाइनरीफॉर्मेटर्स और सोपफॉर्मेटर पर किया जाता है।

मेरा दूसरा प्रश्न है क्या आप दो विशेषताओं में से किसी एक को मिलाकर मेल कर सकते हैं? मैंने अभी तक उनका उपयोग नहीं किया है।

बस इसे बाहर फेंक रहा है, लेकिन क्या मेरे उत्तर के रास्ते [ऑनडिसेरियलाइज्ड] और IdeserilizationCallback इंटरफेस के साथ कुछ करने के लिए कुछ है?

अद्यतन:

मुझे पता है कि वैकल्पिक फ़ील्ड विशेषता एक डेटा सदस्य द्वारा आयोजित मूल्य को क्रमानुसार नहीं करता, लेकिन NonSerialized भी डेटा के किसी सदस्य या अपने मूल्य serialise नहीं होंगे।

+0

बस पूर्णता के लिए - भंडारण से जुड़े किसी भी चीज़ के लिए (यानी जहां संस्करण एक मुद्दा बन जाता है), 'बाइनरीफॉर्मेटर' एक अच्छा विकल्प नहीं हो सकता है।मैं इस मार्ग पर जाने पर समस्याओं के साथ * बहुत सारे लोगों को देखता हूं। –

+0

धन्यवाद मार्क, मैं इस मुद्दे से सावधान हूं, लेकिन मुझे 70-536 परीक्षा के संबंध में इन दो विशेषताओं की अच्छी समझ प्राप्त करने की आवश्यकता है। – IbrarMumtaz

उत्तर

6

इन दो विशेषताओं को क्रमबद्धीकरण समीकरण के विपरीत पक्षों के लिए उपयोग किया जाता है।

जब आप [NonSerialized] का उपयोग करते हैं, तो आप कह रहे हैं "इस क्षेत्र को क्रमबद्ध नहीं किया जाना चाहिए" - इसलिए यह "बचत समय" विशेषता से अधिक है। असल में, आप कह रहे हैं कि क्षेत्र वस्तु के क्रमबद्ध स्थिति के लिए कोई फर्क नहीं पड़ता।

जब आप [OptionalField] का उपयोग करते हैं, तो दूसरी तरफ, आप अभी भी क्षेत्र को क्रमबद्ध करने जा रहे हैं। हालांकि, यदि क्षेत्र पर (जब स्ट्रीम किसी ऑब्जेक्ट में deserialized है), तो कोई अपवाद नहीं उठाया जाएगा। यह विशेषता वास्तव में आपको संगतता को तोड़ने के बिना मौजूदा धारावाहिक प्रकार में एक नया फ़ील्ड जोड़ने की अनुमति देने के लिए है। ऑब्जेक्ट के पुराने संस्करण (जो उस फ़ील्ड को गायब कर रहे हैं) सामान्य रूप से deserialized किया जाएगा।

+0

धन्यवाद, जो मुझे दिमाग में था, मैं बस कुछ और हो सकता है जो मुझे याद आ रही है .......:) – IbrarMumtaz

+0

@ इब्रारमुमताज़: नहीं - अंतर आपके इरादे में है। [वैकल्पिक फाल्ड] अभी भी सुझाव देता है कि क्षेत्र पर राज्य का असर पड़ता है, लेकिन [NotSerialized] वास्तव में इसका मतलब है कि क्षेत्र ऐसा कुछ है जो सिर्फ वहां नहीं होना चाहिए, इससे कोई फर्क नहीं पड़ता कि ... –

+0

'[NonSerialized] 'का अर्थ यह भी हो सकता है" यह फ़ील्ड उस ऑब्जेक्ट को संदर्भित करता है जिसे धारावाहिक नहीं किया जा सकता है, इसलिए अगर हम इसे क्रमबद्ध करने का प्रयास करते हैं तो हमें अपवाद मिलेगा "। –

1

बस अंग्रेजी भाषा से खेल, की आवश्यकता नहीं है और वैकल्पिक इस मामले में एक ही बात मतलब है।

आपके पहले प्रश्न के लिए, आपने इसे बहुत ज्यादा सिर पर खींचा। [OptionalField] मूल रूप से पुराने क्रमिकरणों को नई परिभाषाओं के साथ संगत होने की अनुमति देता है। [NonSerialized] का अर्थ है कि आपको इसे धारावाहिक डेटा में नहीं मिलेगा।

मतभेदों को देखते हुए, मैं कल्पना नहीं कर सकता कि आप दोनों को एक ही क्षेत्र में क्यों रखा जाएगा लेकिन मुझे लगता है कि संकलक शिकायत करेगा।

+0

कंपाइलर दो हूट नहीं देगा। * रनटाइम * इसे पसंद नहीं कर सकता (मैंने कोशिश नहीं की है)। –

+0

आप कभी भी एक या दूसरे दोनों का उपयोग नहीं करेंगे, प्रश्न कौन सा है? – IbrarMumtaz

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