DataContract版本控制和更改不同版本的IsRequired属性

时间:2014-03-25 17:51:53

标签: c# wcf versioning datacontract

在DataContract类中执行不严格的版本控制时,Best Practices: Data Contract Versioning指南指出:

  

请勿将任何现有数据成员的IsRequired属性从版本更改为版本。

但是Data Contract Versioning指南指出:

  

将IsRequired属性值从true更改为false不会中断,但如果该类型的任何先前版本没有相关数据成员,则将其从false更改为true可能会中断。

第一个指南说永远不应该更改IsRequired,然后第二个指南说明从false更改为true是不会中断的。

您如何反映合约的更高版本中不再需要财产?如果我将IsRequiredtrue更改为false,那么会破坏使用早期版本的客户吗?他们可以省略曾经需要的财产。这种变化是否需要引入新合同?

1 个答案:

答案 0 :(得分:1)

当您将IsRequiredtrue更改为false时,表示每个来电者都在使用该字段中的值。删除IsRequired不会改变它们的任何内容,因为它们已经包含了一个值,因此“不会破坏”。

然后,您的客户可以决定继续发送给定值,或在将来调用WebService的版本中省略它。在这种情况下,我不会使用新合同。