इसलिए मैं अपने कोड बेस से गुजर रहा हूं और मैंने देखा है कि हमारे डीटीओ के पास [DataMember]
और [IgnoreDataMember]
विशेषताओं का मिश्रण और मिलान है।[IgnoreDataMember] विशेषता बनाम [डेटागम्बर] विशेषता नहीं है
अतीत में, हमें बताया गया है कि अगर हम डीटीओ धारावाहिक में कुछ नहीं चाहते हैं, तो बस [DataMember]
विशेषता जोड़ें। तब मैंने दूसरी विशेषता देखी और कुछ खुदाई की और ऐसा लगता है कि यह स्पष्ट रूप से बताता है कि संपत्ति को क्रमबद्ध नहीं किया जाएगा।
अब मेरा प्रश्न है, जो बेहतर है? [IgnoreDataMember]
जोड़ना या कुछ भी नहीं जोड़ना।
मैंने चारों ओर पूछा है और ऐसा लगता है कि [IgnoreDataMember]
उन दिनों से है जब सबकुछ क्रमबद्ध किया गया था और आपको यह निर्देश देना था कि क्या अनदेखा किया जाना चाहिए (मुझे नेट 2 में विश्वास है)। फिर उन्होंने इसे विपरीत में बदल दिया और आपको स्पष्ट रूप से यह कहना था कि धारावाहिक होना चाहिए। अब ऐसा लगता है कि आप दोनों कर सकते हैं।
भी एमएस के मुताबिक: "IgnoreDataMemberAttribute विशेषता केवल अनमार्क किए गए प्रकारों के साथ उपयोग की जाती है।"; यदि आप उसी वर्ग पर '[DataContract] 'और' [IgnoreDataMember] 'का उपयोग करते हैं, तो बाद वाले को अनदेखा किया जाता है। –
@ माइकलएडेनफील्ड पेडेंटिक होने के लिए, 'डेटाकंट्रैक्टसेरियलाइज़र' सभी सार्वजनिक क्षेत्रों और गुणों * के लिए डिफ़ॉल्ट * (सार्वजनिक क्षेत्र बहुत दुर्लभ हैं); और यहां तक कि यह थोड़ा अस्पष्ट है। उदाहरण के लिए, यदि हम 'NetDataContractSerializer' के बारे में बात कर रहे हैं, तो यह * सभी फ़ील्ड * (सार्वजनिक और निजी) पर डिफ़ॉल्ट है, लेकिन कोई गुण –
मुझे पता है कि यह पुराना धागा है, लेकिन मुझे कल एक समस्या का सामना करना पड़ा जो इंगित करता है कि श्री ईडनफील्ड कहा बिल्कुल ठीक नहीं है। मेरे पास एक फ़ील्ड है, और 4 गुण हैं। सभी 4 गुण डेटा के कुछ रूप (बाइट सरणी, स्ट्रिंग या अन्य, उदाहरण के लिए) रूपांतरित करते हैं और इसे एक फ़ील्ड में लिखते हैं। मैंने क्लास को डेटाकंट्रैक्ट विशेषता के साथ चिह्नित किया और केवल डेटामेम्बर के रूप में फ़ील्ड को चिह्नित किया। हालांकि, इस तरह deserializer गुणों को अनदेखा नहीं किया है, लेकिन उन्हें डिफ़ॉल्ट मान (जो फ़ील्ड को ओवरराइट करेगा) पर सेट करें। गुणों के लिए [IgnoreDataMember] को जोड़ना समस्या को हल करता है। तो इसे नजरअंदाज नहीं किया जाता है –