c# - क्यों XmlSerializer को[Serializable] चिह्नित करने की आवश्यकता नहीं है?




xml-serialization datacontractserializer (2)

सी # में, अगर मैं XmlSerializer साथ एक आवृत्ति को सीरियल करना चाहता हूं, तो वस्तु का प्रकार [Serializable] विशेषता के साथ चिह्नित नहीं होना चाहिए हालांकि, अन्य सीरिजलाइज़ेशन दृष्टिकोणों के लिए, जैसे DataContractSerializer , को क्लास को [Serializable] या [DataContract] के रूप में चिह्नित किया जाना चाहिए।

क्या कोई मानक या क्रमबद्धता आवश्यकता के बारे में पैटर्न है?


अभी नेट स्टाइल में सीरियललाइज़ेशन के तीन रूप हैं।

  1. XmlSerialization - डिफ़ॉल्ट रूप से सार्वजनिक क्षेत्रों और गुणों पर काम करता है अब भी XmlElementAttribute, XmlAttributeAttribute, आदि द्वारा नियंत्रित किया जा सकता है ...
  2. बाइनरी सिरिअलाइज़ेशन - सीरियलाइज़ेशन विशेषता द्वारा नियंत्रित। सीएलआर में गहराई से एकीकृत
  3. WCF Seralization - DataContractAttribute, आदि ...

दुर्भाग्य से धारावाहिककरण के लिए मानक समग्र पैटर्न है। सभी 3 ढांचे के पास अलग-अलग आवश्यकताओं और quirks है।


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







datacontractserializer