Различие между NonSerialized и Xml. Сериализация. XmlIgnore?

Мы сериализируем/десериализовываем класс от 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
16
задан hawbsl 19 September 2013 в 08:50
поделиться

1 ответ

Неспериализованная применяется к большему числу типов сериализации, чем XML. Неспериализованную сериализацию можно использовать, если вы сериализуете в двоичный формат или формат SOAP, и XmlIgnore, если вы строго сериализуете в XML с помощью XmlSerializer. См. раздел примечаний класса NonSerializedAttribute в MSDN.

18
ответ дан 30 November 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: