Я читал Рекомендации Microsoft: управление версиями контракта данных , и они утверждают:
Не удаляйте элементы данных в более поздних версиях, даже если свойство IsRequired было оставлено со свойством по умолчанию false в предыдущих версиях.
Может кто-нибудь предложить какие-либо причины для этого? Они не уточняют. Так как они говорят, что добавлять элементы данных в более поздней версии вполне нормально, похоже, что удаление тоже будет хорошо - эффективно, более старая версия будет рассматривать это как добавление.
Разница, я полагаю, в том, что вы должны добавлять новые элементы в конце (используя свойство Order в DataMemberAttribute), тогда как удаление свойства, вероятно, не будет в конце. Но они также говорят, что при загрузке пропущенные элементы останутся со своими значениями по умолчанию, поэтому ясно, что пропущенные элементы в порядке.
Что мне не хватает? Какие проблемы взаимодействия версий я бы вызвал (как прямую совместимость, так и обратную совместимость), если бы я устарел в своем продукте и удалил свойство [DataMember], которое к нему относится? *
Кроме того, если я решу, что меня не интересует прямая совместимость (т. Е. Если я не беспокоюсь о старых версиях, открывающих более новые файлы), все еще будут ли такие проблемы?