2010-02-04 22 views
14

हम एक्सएमएल से कक्षा को क्रमबद्ध/deserializing कर रहे हैं, लेकिन कक्षा में गुण और फ़ील्ड हैं जिन्हें हम बाहर करना चाहते हैं।NonSerialized और Xml.Serialization.XmlIgnore के बीच अंतर?

System.NonSerialized और System.Xml.Serialization.XmlIgnore गुण काम करने के लिए लग रहे हैं लेकिन क्या उन दोनों के बीच क्या अंतर है? ऐसा लगता है कि हम वर्ग के गुण या फ़ील्ड पर XmlIgnore का उपयोग कर सकते हैं। लेकिन NonSerialized केवल फ़ील्ड पर उपयोग किया जा सकता है। क्या हर मामले में XmlIgnore का उपयोग न करने का कोई कारण नहीं है, और यदि ऐसा है तो nonSerialized विशेषता का उद्देश्य क्या है और उपयोग में अंतर क्यों है?


यह अनुमति दी है:

<System.NonSerialized()> _ 
Public Foo As String 

यह अनुमति दी है:

<System.Xml.Serialization.XmlIgnore()> _ 
Public Foo As String 

यह अनुमति दी है:

<System.Xml.Serialization.XmlIgnore()> _ 
Public Property Bar() As String 
    Get 
     Return _Bar 
    End Get 
    Set(ByVal value As String) 
     _Bar = value 
    End Set 
End Property 

लेकिन यह अनुमति नहीं है:

<System.NonSerialized()> _ 
Public Property Bar() As String 
    Get 
     Return _Bar 
    End Get 
    Set(ByVal value As String) 
     _Bar = value 
    End Set 
End Property 

उत्तर

15

NonSerialized एक्सएमएल से क्रमबद्धता के अधिक प्रकार के लिए लागू होता है। यदि आप XmlSerializer का उपयोग करके एक्सएमएल को सख्ती से क्रमबद्ध कर रहे थे तो आप बाइनरी या एसओएपी और एक्सएमएल इग्नोर को क्रमबद्ध कर रहे थे, तो आप गैर-सीरियलाइज्ड का उपयोग करेंगे। एमएसडीएन में NonSerializedAttribute कक्षा के टिप्पणी अनुभाग देखें।

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