我正在阅读 Microsoft's Best Practices: Data Contract Versioning,他们指出:
不要在以后的版本中删除数据成员,即使IsRequired属性在以前的版本中保留为默认属性false 。
任何人都可以提出任何理由吗?他们没有详细说明。由于他们说可以在以后的版本中添加数据成员,因此删除似乎也可以 - 实际上,旧版本会将其视为添加。
我想,不同之处在于您应该在最后添加新成员(使用 DataMemberAttribute 上的 Order 属性),而被删除的属性可能不会在最后。但是他们也说在加载的时候丢失的成员会保持默认值,所以很明显,丢失的成员是可以的。
我错过了什么?如果我废弃了我的产品的某个功能并删除了与之相关的 [DataMember] 属性,我会导致哪些版本互操作问题(向前兼容和向后兼容)?
此外,如果我决定对前向兼容性不感兴趣(即,如果我不担心旧版本打开新文件),是否还会存在此类问题?