开发者

Difference between NonSerialized and Xml.Serialization.XmlIgnore?

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 attribu开发者_开发技巧tes 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


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜