17

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 

1 Answer 1

18

NonSerialized applies to more types of serialization than XML. You would use NonSerialized if you were serializing to binary or SOAP, and XmlIgnore if you were strictly serializing to XML using an XmlSerializer. See the remarks section of the NonSerializedAttribute class at MSDN.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.