Мы сериализируем/десериализовываем класс от XML, но существуют свойства и поля в классе, который мы хотим исключить.
Система. NonSerialized и Система. Xml. Сериализация. Атрибуты 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
Неспериализованная применяется к большему числу типов сериализации, чем XML. Неспериализованную сериализацию можно использовать, если вы сериализуете в двоичный формат или формат SOAP, и XmlIgnore, если вы строго сериализуете в XML с помощью XmlSerializer. См. раздел примечаний класса NonSerializedAttribute в MSDN.