We're serializing/deserializing a class from XML but there are properties and fields in the class which we want to exclude.
The System.NonSerialized and System.Xml.Serialization.XmlIgnore attributes seem to do the job but what's the difference between them? It seems we can use XmlIgnore on either properties or fields of the class. But NonSerialized can only be used on fields. Is there any reason not to use XmlIgnore in every case, and if so what's the purpose of the NonSerialized attribute and why the difference in usage?
This is allowed:
<System.NonSerialized()> _
Public Foo As String
This is allowed:
<System.Xml.Serialization.XmlIgnore()> _
Public Foo As String
This is allowed:
<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
But this is not allowed:
<System.NonSerialized()> _
Public Property Bar() As String
Get
Return _Bar
End Get
Set(ByVal value As String)
_Bar = value
End Set
End Property
See Question&Answers more detail:os