Как я могу игнорировать свойство при сериализации с помощью DataContractSerializer?
Я использую .NET 3.5SP1 и DataContractSerializer для сериализации класса. В SP1 они изменили поведение, так что вам не нужно включать атрибуты DataContract/DataMember в класс, и он просто сериализует все это. Это поведение я использую, но теперь мне нужно игнорировать одно свойство из сериализатора. Я знаю, что один из способов сделать это-добавить атрибут DataContract в класс и просто поместить атрибут DataMember на все члены, которые я хочу включать. У меня есть причины, что это не будет работать для меня.
Итак, мой вопрос в том, есть ли атрибут или что-то, что я могу использовать, чтобы заставить DataContractSerializer игнорировать свойство?
5 ответов:
кроме того, DataContractSerializer сериализует элементы, помеченные как [Serializable], а также сериализует немаркированные типы в .NET 3.5 SP1 и более поздних версиях, чтобы обеспечить поддержку сериализации анонимных типов.
Итак, это зависит от того, как вы украсили свой класс о том, как сохранить член от сериализации:
- если вы используете
[DataContract], удалить[DataMember]свойства.- если вы используете
[Serializable], затем добавить[NonSerialized]перед поле свойства.- если вы еще не украсили свой класс, то вы должны добавить
[IgnoreDataMember]в собственность.
в сериализации XML можно использовать атрибут [XmlIgnore] (System.XML.Сериализация.XmlIgnoreAttribute) для игнорирования свойства при сериализации класса.
Это может быть полезно для вас (или это просто может быть полезно для тех, кто нашел этот вопрос при попытке выяснить, как игнорировать свойство при сериализации в XML, как я был).
попробуйте пометить поле атрибутом [NonSerialized ()]. Это подскажет сериализатору игнорировать поле.
https://msdn.microsoft.com/en-us/library/system.nonserializedattribute(v=vs. 110).aspx
то, что вы говорите, противоречит тому, что он говорит в библиотеке MSDN по этому адресу:
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx
Я не вижу никакого упоминания о функции SP1, которую вы упомянули.
Comments