Как я могу игнорировать свойство при сериализации с помощью DataContractSerializer?

Я использую .NET 3.5SP1 и DataContractSerializer для сериализации класса. В SP1 они изменили поведение, так что вам не нужно включать атрибуты DataContract/DataMember в класс, и он просто сериализует всю вещь. Это поведение, которое я использую, но теперь мне нужно игнорировать одно свойство из сериализатора. Я знаю, что один из способов сделать это - добавить атрибут DataContract в класс и просто поместить атрибут DataMember во все члены, которые я хочу включить. У меня есть причины, однако, что это не сработает для меня.

Итак, мой вопрос: есть ли атрибут или что-то, что я могу использовать, чтобы заставить DataContractSerializer игнорировать свойство?

Ответ 2

Кроме того, DataContractSerializer будет сериализовать элементы, помеченные как [Serializable], а также сериализовать немаркированные типы в .NET 3.5 SP1 и более поздних версиях, чтобы разрешить сериализацию анонимных типов.

Итак, это зависит от того, как вы украсили свой класс, как сохранить член от сериализации:

  • Если вы использовали [DataContract], затем удалите [DataMember] для свойства.
  • Если вы использовали [Serializable], добавьте [NonSerialized] перед полем для свойства.
  • Если вы не украсили свой класс, вам следует добавить [IgnoreDataMember] в свойство.

Ответ 3

В XML Serializing вы можете использовать атрибут [XmlIgnore] (System.Xml.Serialization.XmlIgnoreAttribute), чтобы игнорировать свойство при сериализации класса.

Это может быть полезно для вас (или это может быть полезно для всех, кто нашел этот вопрос при попытке выяснить, как игнорировать свойство при сериализации в XML, как и я).