c# डेटा कंट्रैक्ट्रेसेराइजर एक ऑप्ट-इन सीरियलइज़र है I इसे ऑप्ट-आउट कैसे करें?




.net wcf (4)

डॉनेट 4.0 और उससे ऊपर,

आप [DataContract] विशेषता से बच सकते हैं ताकि सभी public डेटामैम्बर्स सीरियलज योग्य हो सकें।

मुझे बड़ी कक्षाओं वाले विशेषताओं के साथ कुछ कक्षाएं मिलीं मैं उन्हें WCF लिए श्रृंखलाबद्ध करने में सक्षम होना चाहता हूँ

चूंकि DataContractSerializer एक ऑप्ट-इन सीरियलइज़र है, मुझे सभी गुणों को DataMember विशेषता से सजाने की आवश्यकता होगी, जो मुझे थोड़ा बोझिल लगता है। मेरे पास कोई अन्य तरीका नहीं है जिससे कि मुझे सभी गुणों के लिए DataMember जोड़ना पड़े।

कृपया ध्यान दें, मेरे अधिकांश गुणों को क्रमबद्ध करने की आवश्यकता है।


आप अपनी कक्षाओं को किसी भी सामान्य धारावाहिक विशेषताओं (यानी [DataContract] / [Serializable] ) के साथ चिह्नित नहीं कर सकते हैं और यह सुनिश्चित कर लें कि सभी गुण जो आप सीरियलाइज़ करना चाहते हैं, वे सार्वजनिक get और set । यदि आप एक विशिष्ट संपत्ति को बाहर करना चाहते हैं, तो आपको इसे [IgnoreDataMember] विशेषता के साथ चिह्नित करना होगा।

उदाहरण:

public class Hamster
{
    public string Name { get; set; }
    [IgnoreDataMember]
    public int Age { get; set; }
}

MSDN पर क्रमबद्ध प्रकार से:

आप DataContractAttribute और DataMemberAttribute विशेषताओं को लागू कर सकते हैं ... हालांकि, इन विशेषताओं के साथ चिह्नित नहीं किए गए प्रकार भी क्रमबद्ध और deserialized हैं निम्नलिखित नियम और अपवाद लागू होते हैं: ...
सभी सार्वजनिक क्षेत्रों, और सार्वजनिक प्राप्त और सेट विधियों के साथ गुण क्रमबद्ध होते हैं, जब तक कि उस सदस्य को IgnoreDataMemberAttribute विशेषता लागू न करें।


यह निर्भर करता है कि अगर आपके गुणों को स्वचालित रूप से उत्पन्न किया जा सकता है - यदि हां, तो आप सरल WCF serializer का विकल्प चुन सकते हैं आम तौर पर यह इसके बजाय JSON.NET का उपयोग करने के लिए किया जाता है:

सी # WCF REST - आप डिफ़ॉल्ट डेटा कंट्रेक्ट सेरियलाइज़र के बजाय JSON.Net सीरियल निर्माता का उपयोग कैसे करते हैं?


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







datacontractserializer