在DataContract类中执行不严格的版本控制时,Best Practices: Data Contract Versioning指南指出:
请勿将任何现有数据成员的IsRequired属性从版本更改为版本。
但是Data Contract Versioning指南指出:
将IsRequired属性值从true更改为false不会中断,但如果该类型的任何先前版本没有相关数据成员,则将其从false更改为true可能会中断。
第一个指南说永远不应该更改IsRequired
,然后第二个指南说明从false
更改为true
是不会中断的。
您如何反映合约的更高版本中不再需要财产?如果我将IsRequired
从true
更改为false
,那么会破坏使用早期版本的客户吗?他们可以省略曾经需要的财产。这种变化是否需要引入新合同?
答案 0 :(得分:1)
当您将IsRequired
从true
更改为false
时,表示每个来电者都在使用该字段中的值。删除IsRequired
不会改变它们的任何内容,因为它们已经包含了一个值,因此“不会破坏”。
然后,您的客户可以决定继续发送给定值,或在将来调用WebService的版本中省略它。在这种情况下,我不会使用新合同。