Ответ 1
Я спросил, и кажется, что [IgnoreDataMember] - это дни, когда все было сериализовано, и вам нужно было диктовать, что следует игнорировать (я верю в .Net 2). Затем они изменили его на обратное, и вам нужно было четко указать, что ДОЛЖНО быть сериализовано.
Собственно, это не совсем так; IIRC он всегда был следующим:
- если он отмечен как
[DataContract]
, тогда считаются только те элементы, которые помечены[DataMember]
- если он не помечен как
[DataContract]
, тогда он по умолчанию использует все, но вы можете вычитать элементы с помощью[IgnoreDataMember]
Обычно я просто опускаю [DataMember]
вещей, которые я не хочу сериализовать, но во многом [IgnoreDataMember]
более явственно - в основном в интересах сопровождающего. В нем говорится: "Я намеренно не сериализую это", а не "возможно, я знаю, что это не сериализуется, но, возможно, я просто забыл добавить атрибут".
Либо все будет работать.