Différence entre NonSerialized et Xml.Serialization.XmlIgnore?

Nous sommes la sérialisation/désérialisation d'une classe à partir de XML, mais il y a des propriétés et des champs de la classe qui nous voulons exclure.

La Système.Non sérialisés et Système.Xml.La sérialisation.XmlIgnore attributs semblent faire le travail, mais quelle est la différence entre eux? Il semble que nous pouvons utiliser XmlIgnore sur propriétés ou les champs de la classe. Mais NonSerialized ne peut être utilisé sur les champs. Est-il une raison de ne pas utiliser XmlIgnore dans tous les cas, et si oui, quel est le but de l'attribut NonSerialized et le pourquoi de la différence dans l'usage?


C'est permis:

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

C'est permis:

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

C'est permis:

<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

Mais ce n'est pas permis:

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

source d'informationauteur hawbsl